벡터
다수의 데이터를 다루기 위해 배열이라는 것을 사용했습니다. 사용 방법이 간단하기 때문에 자주 사용되죠.
그런데 배열에는 단점이 있습니다. 배열의 크기가 한번 정해지면 크기 변경이 어렵고 생성된 배열과 같은 종류의 데이터만 사용할 수 있다는 거죠.
이러한 배열의 단점을 보완한 것이 벡터입니다.
벡터의 특징
1. 용량 변경이 가능하다.
2. 여러 객체를 포함시킬 수 있다.
주요 생성자
■ Vector() : 초기 용량 10, 용량 초과 시 크기를 두 배씩 증가
■ Vector(int initCapacity) : 지정한 크기의 용량으로 초기화, 용량 초과 시 크기를 두 배씩 증가
■ Vector(int initCapacity, int capacityIncrement) : 지정한 크기의 용량으로 초기화, 용량 초과 시 크기를 capacityIncrement만큼 증가
Vector v1 = new Vector();
Vector v2 = new Vector(10);
Vector v3 = new Vector(10, 5);
주요 메소드
■ void add(int index, Object element) : 주어진 인덱스 위치에 요소 추가
■ void addElement(Object obj) : Vector 끝에 요소 추가
■ int capacity() : Vector의 현재 용량 리턴
■ void clear() : Vector 초기화
■ boolean contains(Object element) : 주어진 요소가 Vector에 포함되어 있는지 리턴
■ Object elementAt(int index) : 주어진 위치의 요소를 리턴
■ int indexOf(Object element) : 주어진 요소의 위치를 리턴, 요소가 포함되어 있지 않으면 -1 리턴
■ Object remove(int index) : 주어진 위치의 요소를 벡터에서 제거
■ int size() : Vector에 포함되어 있는 요소의 수 리턴
■ void trimToSize() : Vector의 용량을 현재 Vector의 크기에 맞게 수정
package com.bluedayj;
import java.util.StringTokenizer;
import java.util.Vector;
public class VectorTest {
public static void main(String[] args) {
String src = "죽는 날까지 하늘을 우러러\n" +
"한 점 부끄럼이 없기를,\n" +
"잎새에 이는 바람에도\n" +
"나는 괴로워했다.\n" +
"별을 노래하는 마음으로\n" +
"모든 죽어 가는 것을 사랑해야지\n" +
"그리고 나한테 주어진 길을\n" +
"걸어가야겠다.\n" +
"오늘 밤에도 별이 바람에 스치운다.";
StringTokenizer st = new StringTokenizer(src, " ");
Vector v = new Vector();
System.out.println("초기용량 : " + v.capacity());
System.out.println("초기크기 : " + v.size());
while(st.hasMoreTokens()) {
v.addElement(st.nextToken());
}
for(int i = 0; i < v.size(); i++) {
String word = v.elementAt(i).toString();
System.out.println(word);
}
System.out.println("현재용량 : " + v.capacity());
System.out.println("현재크기 : " + v.size());
v.trimToSize();
System.out.println("최적용량 : " + v.capacity());
System.out.println("현재크기 : " + v.size());
v.clear();
System.out.println("초기화 후 용량 : " + v.capacity());
System.out.println("초기화 후 크기 : " + v.size());
}
}
해시테이블
벡터는 대량의 데이터를 저장할 수는 있지만 저장된 데이터 중에서 특정 값을 알아내는데는 적합하지 않습니다. 해시테이블은 벡터를 이용해 검색하기 힘든 데이터를 효과적으로 검색할 수 있는 방법을 제공해줍니다.
주요 생성자
■ Hashtable() : 해시테이블 생성
■ Hashtable(int initialCapacity) : 주어진 용량의 크기를 가지는 해시테이블 생성
■ Hashtable(int initialCapacity, float loadFactor) : 주어진 용량과 부하율을 가지는 해시테이블 생성
주요 메소드
■ void clear() : 해시테이블의 모든 데이터 삭제
■ boolean contains(Object value) : 주어진 요소가 포함되어 있는지 알아낸다
■ boolean containsKey(Object key) : 주어진 키가 포함되어 있는지 알아낸다
■ Enumeration elements() : 해시테이블의 요소에 대한 Enumeration 객체를 얻음
■ Enumeration keys() : 해시테이블의 카에 대한 Enumeration 객체를 얻음
■ Object get(Object key) : 주어진 키에 대한 요소를 검색
■ Object put(Object key, Object value) : 해시테이블에 요소 추가
■ Object remove(Object key) : 주어진 키에 해당하는 값을 제거
package com.bluedayj;
import java.util.Enumeration;
import java.util.Hashtable;
public class HashtableTest {
public static void main(String[] args) {
Hashtable hash = new Hashtable();
hash.put("이름", "홍길동");
hash.put("나이", "20세");
hash.put("국적", "대한민국");
System.out.println("이름 : " + hash.get("이름"));
Enumeration e = hash.keys();
while(e.hasMoreElements()) {
String key = e.nextElement().toString();
String val = hash.get(key).toString();
System.out.println(key + " : " + val);
}
}
}
'프로그래밍 언어 > 자바' 카테고리의 다른 글
예외 처리 (0) | 2022.09.12 |
---|---|
날짜 다루기 (0) | 2022.09.12 |
자바 문자열 다루기 #2 (0) | 2022.09.12 |
자바 문자열 다루기 #1 (0) | 2022.09.12 |
자바 클래스와 객체 #6 (0) | 2022.09.12 |