🔷 컬렉션 (Collection)
: 가변 개수의 객체들(요소)의 저장소/컨테이너
- 요소의 개수에 따라 크기 자동 조절
- 요소의 삽입/삭제에 따른 요소의 위치 자동 이동
- 제네릭(generics) 기법으로 구현

🔷 제네릭 (Generic)
: 특정 타입만 다루지 않고, 여러 종류의 타입으로 변신가능하도록 클래스/메소드를 일반화시키는 기법
- 컬렉션의 클래스/인터페이스 이름에 타입매개변수(<E>,<K>,<V> 등) 포함
- E(element) : 요소, K(key) : 키 값, V(value) : key에 대응되는 값
- 요소는 객체만 가능 (int 등 기본타입을 불가능)
- 타입 매개변수는 일반적으로 대문자 알파벳 한 개로 아무거나 사용 가능
🔷 Vector<E> 클래스 (java.util.Vector)
: 배열을 가변크기로 다룰 수 있게 하는 컨테이너
- <E> : E 대신 사용할 요소의 특정 타입으로 구체화 (ex. )
- 동기화 지원, 한번에 하나의 스레드만 접근 가능
- 삽입 가능한 것 : 객체, null
Vector<타입매개변수> 변수 = new Vector<타입매개변수>(용량); : 벡터 객체 생성
- 메소드
변수.add(E 요소) : 벡터 맨 뒤에 요소 추가
변수.add(int 인덱스, E 요소) : 인덱스 위치에 요소 추가
변수.capacity() : 벡터의 용량 리턴 (선언 시 용량 생략하면 디폴트값 10)
변수.size() : 요소 개수 리턴
변수.clear() : 모든 요소 삭제
변수.remove(int 인덱스) : 인데스 위치의 요소 삭제
변수.remove(Object 객체) : 객체와 같은 첫 번째 요소를 삭제
변수.removeAllElements() : 모든 요소 삭제, 크기 0으로 만듦
변수.elementAt(int 인덱스) : 인덱스 위치의 요소 리턴
변수.get(int 인덱스) : 인덱스 위치의 요소 리턴
변수.indexOf(Object 객체) : 객체와 같은 첫번째 요소의 인덱스 리턴 (없으면 -1)
변수.contains(Object 객체) : 객체를 포함하고 있으면 true 리턴
변수.isEmpty() : 벡터가 비어 있으면 true 리턴
변수.toArray() : 벡터의 모든 요소를 포함하는 배열 리턴
🔷 ArrayList (java.util.ArrayList)
: 가변크기의 배열 구현한 클래스 (벡터 기능과 거의 동일)
- 스레드 동기화 기능 x
- 동시에 여러 스레드 작업 가능
- 개발자가 명시적으로 동기화하는 코드를 추가해야함
- ⇒ Vector 보다 ArrayList가 속도가 더 빠르고, ArrayList를 사용하는 것이 바람직!
ArrayList<타입매개변수> 변수 = new ArrayList<타입매개변수>(용량); : ArrayList객체 생성
- 위의 벡터 메소드에서 capacity()와 removeAllElements()빼고 동일
🔷 Iterator (java.util.Iterator)
: 리스트 구조의 컬렉션에서 요소의 순차 검색을 위한 인터페이스
- Vector, ArrayList, LinkedList 가 상속받는 인터페이스
Iterator<타입매개변수> 변수 = 컬렉션변수.iterator(); : Iterator객체 생성
- 컬렉션변수는 Vertor/ArrayList/LinkedList 중 하나의 변수
- 메소드
변수.hasNext() : 다음 반복에서 사용될 요소 있으면 true 리턴
변수.next() : 다음 요소 리턴
변수.remove() : 마지막으로 리턴된 요소 제거
Vertor<Integer> v = new Vector<Integer>();
v.add(5);
v.add(4);
v.add(-1);
v.add(2, 100);
Iterator<Integer> it = v.iterator();
while(it.hasNext()) {
int n = it.next();
System.out.print(n + " ");
}
🔷 HashMap<K,V> (java.util.HashMap)
: 키와 값의 쌍으로 구성되는 요소를 다루는 컬렉션
- <K,V> : K에는 키로 사용할 요소타입, V에는 값으로 사용할 요소타입
- 삽입/검색 빠름 : 삽입은 put(), 검색은 get() 메소드 사용
HashMap<key타입매개변수, value타입매개변수> 변수 = new HashMap<key타입매개변수, value타입매개변수>(); : 해시맵 객체 생성
- 메소드
변수.put(K 키, V 값) : key와 value를 매핑하여 저장
변수.get(Object 키) : 키에 매핑되는 값 리턴 (매핑되는 값 없으면 null 반환)
변수.remove(Object 키) : 키와 매핑되는 값을 삭제
변수.clear() : 모든 요소 삭제
변수.containsKey(Object 키) : 키를 포함하고 있으면 true 리턴
변수.containsValue(Object 값) : 값에 매핑가능한 키가 있으면 true 리턴
변수.isEmpty() : 비어 있으면 true 리턴
변수.size() : 요소 개수 리턴
변수.keySet() : 모든 키를 담은 Set 컬렉션 리턴
🔷 제네릭 생성