일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CVS
- Jrun
- samba
- MSSQL
- oralce
- Adobe pdf reader
- 에덴미술
- 국민연금
- 블로그 수익화
- 블루수국그림
- IIS
- Jexcel
- HTML
- 갑근세
- JSP
- 블로그 방문자 늘리기
- Vista
- Eclipse
- flash
- 블로그 조회수 늘리기
- JavaScript
- .NET
- MySQL
- PHP
- CSS
- 인테리어그림
- 즐겨찾기 추가
- Administrator
- 블로그 조회수
- 소득세
- Today
- Total
I LOVE EJ
Vector와 Hashtable 본문
6.4.3 Vector와 Hashtable
Vector와 Hashtable은 내부적으로 Collection인터페이스를 사용하고 있는 대표적인 놈입니다.
Vector는 Collection자체를 바로 구현한 클래스이며, Hashtable은 내부적으로 Collection을 사용하고 있습니다.
객체를 저장할 수 있다는 면에서는 이 두 클래스는 비슷하지만 내부적인 구현과 약간의 사용방법이 다릅니다.
Hashtable의 특성을 본다면 단연코 유일한 키값을 가지고 있다는 것입니다. 이 말은 객체를 삽입할 때 특별한 키값을 같이 입력하고, 그리고 객체를 추출할 때에는 키값으로 객체를 추출하는 기법을 사용 할 수 있다는 것입니다.
즉, 객체를 저장할 때 꼬리표를 하나 붙여 두는 것이지요. 그리고 이 꼬리표를 이용해서 객체를 다시 얻어오는 것입니다. 꼬리표 또한 객체의 형식을 사용하고 있습니다. 보통의 꼬리표(키값)는 스트링형을 사용합니다.
Vector의 경우에는 이와는 달리 객체만을 삽입하고 객체를 순서대로 추출하는 기법을 사용합니다. 단순한 저장공간으로만 사용하는 것입니다. 벡터와 해시테이블의 차이점을 정리하면 다음과 같습니다.
벡터와 해시테이블의 차이점
n 벡터: 데이터의 입력한 순서에 따라서 데이터 추출, index로 추출
n 해시테이블: 키값과 데이터를 같이 입력하고 키값으로 데이터를 추출할 수 있다.
n 물론, 해시테이블은 벡터의 기능을 그대로 가지고 있다.
그럼 Vector 의 초 간단 예제를 한번 살펴 볼까요
VectorTest.java import java.util.Vector; public class VectorTest { public static void main(String[] args) { Vector v = new Vector(); System.out.println("생성직후의 size: " + v.size()); //1. 벡터객체에 데이터4개 삽입 v.addElement(new String("망아지")); v.addElement(new String("송아지")); v.addElement(new String("강아지")); v.addElement(new String("병아리")); System.out.println("데이터 삽입후의 size: " + v.size()); //2. Vector의 요소 가져오기 for(int i=0; i< v.size(); i++){ String temp = (String)v.elementAt(i); System.out.println("벡터의 " + i + "번째:" + temp); } } } C:\examples\6. Array>javac VectorTest.java C:\examples\6. Array>java VectorTest 생성직후의 size: 0 데이터 삽입후의 size: 4 벡터의 0번째:망아지 벡터의 1번째:송아지 벡터의 2번째:강아지 벡터의 3번째:병아리
일단 Vector객체를 하나 생성합니다.
n Vector v = new Vector();
그리고 Vector v에 스트링 객체 4개를 삽입합니다. 데이터를 삽입할 때는 addElement(Object obj)메서드를 이용합니다. 그리고 매개변수는 객체의 형식을 이용합니다.
n v.addElement(new String("망아지"));
n v.addElement(new String("송아지"));
n v.addElement(new String("강아지"));
n v.addElement(new String("병아리"));
넣었다면 다시 뽑아서 보아야죠. 객체의 삽입된 순서에 따라서 다시 데이터를 추출합니다.
n for(int i=0; i< v.size(); i++){
n String temp = (String)v.elementAt(i);
n System.out.println("벡터의 " + i + "번째:" + temp);
n }
벡터 내에 있는 객체의 수는 size()메서드를 이용하여 얻을 수 있습니다. 그 수만큼 elementAt메서드를 이용하여 index순으로 차례대로 데이터를 추출합니다. 하지만 추출된 데이터는 Object형이기 때문에 원래의 형으로 형변환을 해 주어야 합니다.
n String temp = (String)v.elementAt(i);
위의 예에서 Vector를 처음 생성했을 때 size는 0입니다. 그리고 데이터를 4개 삽입했을 때의 개수는 4입니다. 이 단순한 소스는 벡터라는 것이 무엇을 하는 것인지 정확하게 보여주고 있습니다. 벡터를 보다 다양하게 이용하고 있는 예제를 하나 살펴보도록 하겠습니다.
VectorTest2.java |
import java.util.Vector; public class VectorTest2 { public static void main(String[] args) { Vector v = new Vector(); //벡터객체에 데이터 삽입 v.addElement(new Character('A')); v.addElement(new String("굼뱅이")); v.addElement(new Integer(100)); v.addElement(new Integer(200)); v.insertElementAt(new Float(3.141592), 1); //1번째에 중간삽입 v.setElementAt(new String("Set"), 3); //3번째존재하는 것 제거후 다시 삽입(update) System.out.println("size: " + v.size()); System.out.println("벡터의0번째:" + (Character)v.elementAt(0)); System.out.println("벡터의1번째:" + (Float)v.elementAt(1)); System.out.println("벡터의2번째:" + (String)v.elementAt(2)); System.out.println("벡터의3번째:" + (String)v.elementAt(3)); System.out.println("벡터의4번째:" + ((Integer)v.elementAt(4)).toString()); if(v.contains(new String("Set"))){ Integer integer = new Integer(v.indexOf("Set")); System.out.println("Index of String(\"Set\"): " + integer.toString()); } } }
C:\examples\6. Array>javac VectorTest2.java C:\examples\6. Array>java VectorTest2 size: 5 벡터의0번째:A 벡터의1번째:3.141592 벡터의2번째:굼뱅이 벡터의3번째:Set 벡터의4번째:200 Index of String("Set"): 3 |
이 프로그램의 절차는 다음과 같습니다.
n 벡터를 생성한다.
Vector v = new Vector();
n 벡터에 4개의 객체를 삽입한다.
v.addElement(new Character('A'));
v.addElement(new String("굼뱅이"));
v.addElement(new Integer(100));
v.addElement(new Integer(200));
n 벡터의 1번째 자리에 객체를 삽입한다.
v.insertElementAt(new Float(3.141592), 1); //1번째에 중간삽입
n 벡터의 3번째 자리의 것을 지우고 다른 객체로 업데이트한다.
v.setElementAt(new String("Set"), 3); //3번째존재하는 것 제거후 다시 삽입(update)
n 벡터의 데이터를 모두 얻어내어 원래의 형으로 변환하여 출력한다.
System.out.println("벡터의0번째:" + (Character)v.elementAt(0));
System.out.println("벡터의1번째:" + (Float)v.elementAt(1));
System.out.println("벡터의2번째:" + (String)v.elementAt(2));
System.out.println("벡터의3번째:" + (String)v.elementAt(3));
System.out.println("벡터의4번째:" + ((Integer)v.elementAt(4)).toString());
n 벡터에 특정객체가 있는지 확인한다.
v.contains(new String("Set")) 있다면 true 없다면 false
n 벡터에 찾고자하는 객체를 이용하여 해당객체를 벡터에서 찾는다.
v.indexOf("Set"));
벡터에서 사용할 수 있는 여러가지 메서드의 사용방법을 보여주고 있습니다.
'Com Language > Java' 카테고리의 다른 글
Calendar() 달력출력하기 (0) | 2007.08.10 |
---|---|
Calendar 클래스 (0) | 2007.08.10 |
Calendar.getInstance() (0) | 2007.08.10 |
데이터 저장공간 (배열, Collection, Map) (0) | 2007.08.10 |
Vector와 Hashtable (0) | 2007.08.10 |