<E>
배열을 가변 크기로 다룰 수 있게 하며, 객체의 삽입, 삭제, 이동이 쉽도록 구성한 컬렉션 클래스
삽입되는 요소의 개수에 따라 자동으로 크기를 조절한다.
요소의 삽입과 삭제에 따라 자동으로 요소들의 자리를 이동한다.
E 의 요소로 사용할 클래스 타입을 반드시 지정해야 한다.
벡터의 용량을 설정할 수 있다.
⚠ 컬렉션은 자신의 용량을 스스로 조절하기 때문에 굳이 넣을 필요는 없다.
Vector<Integer> v = new Vector<Integer>(5); // 초기 용량이 5인 정수만 사용 가능한 벡터
v.add(new Integer(5));
v.add(5); // 자동 박싱
v.add("5"); // 오류. 정수만 입력 가능
v.add(null); // 벡터에 null도 삽입할 수 있음.
v.add(2, 5); // 중간에 삽입 가능. 인덱스 2에 정수 5 삽입.
// 기존의 2와 그 이후에 있던 인덱스의 요소들은 모두 한 자리씩 이동.
Integer obj = v.get(0); // 벡터의 인덱스 1의 위치에 있는 요소를 얻어냄.
int i = obj.intValue(); // obj에 있는 정수를 알아냄. 이 값은 5
int i = v.get(0); // 자동 언박싱
int len = v.size(); // 벡터의 크기(벡터에 존재하는 요소의 수)
int cap = v.capacity(); // 벡터의 용량
v.remove(1); // 인덱스 1의 위치에 있는 요소 삭제
// 뒤에 있는 요소들은 한 자리씩 앞으로 이동.
Integer m = new Integer(100);
v.add(m);
...
v.remove(m); //레퍼런스 m의 요소 삭제
<E>
가변 크기의 배열을 구현한 컬렉션으로서 Vector 클래스와 거의 동일하다.
스레드 간의 동기화를 지원하지 않기 때문에, 다수의 스레드가 동시에 ArrayList에 요소를 삽입하거나 삭제할 때 충돌이 발생할 소지가 있다.
때문에, ArrayList를 이용하려면 멀티스레드의 동기화를 사용자가 직접 구현해야 한다.
<K, V>
K는 '키'로 사용할 데이터 타입을, V는 '값'으로 사용할 데이터 타입의 타입 매개 변수이다.
해시 함수를 통해 '키'와 '값'이 저장되는 위치를 결정하므로, 삽입되는 순서와 들어 있는 위치는 관계가 없다.
인덱스를 이용하여 요소를 접근할 수 없고 오직 '키'로 검색해야 한다.
자동으로 크기를 조절한다.
K와 V으로 사용할 구체적인 타입을 지정하여 생성
HashMap<String, String> h = new HashMap<String, String>(); // 스트링타입의 해시맵을 생성
h.put("baby","아기"); // "baby"가 키고, "아기"는 값이다.
h.put("husband","남편");
String string1 = h.get("baby"); // string1 = "아기"
String string2 = h.get("husband"); // string2 = "남편"
String string3 = h.get("man"); // man는 h에 없는 키이므로 null을 리턴. string3 = null
h.remove("pencil"); // put("pencil", "연필")로 삽입한 요소 삭제
int n = h.size(); //현재 h 내에 있는 요소의 개수 리턴
Set<String> keys = h.keySet(); // h에 있는 모든 키를 Set 컬렉션으로 리턴
Iterator<String> it = keys.iterator(); // 문자열을 검색할 수 있는 Iterator 리턴
while(it.hasNext()) {
String key = it.next(); // 키
String value = h.get(key); // 값
System.out.println("("+key+","+value+")"); // 키와 값의 쌍 출력
}
(baby,아기)
(husband,남편)
<E>
Vector, ArrayList, LinkedList, Set 컬렉션에서 순차적으로 요소를 검색할 때 쓰인다.
Iterator을 사용할 때, E 에 컬렉션의 매개 변수와 동일한 타입을 설정해야 한다.
Vector<Integer> v = new Vector<Integer>();
Iterator<Integer> it = v.iterator(); // 벡터 v의 iterator()메소드를 호출
// 벡터 v의 요소를 순차 검색할 Iterator 객체 리턴
while(it.hasNext()) { // it로 벡터의 끝까지 반복
int n = it.next(); //요소 리턴.
....
}