Java Collection Framework
Java Collection은 데이터 집합의 저장 및 조작을 위한 구조를 제공하는 프레임워크다.
다시 쉽게 말해, Java Collection Framework는 다양한 인터페이스와 클래스를 제공하는 FW다. (참고)
- 
Collection ? 오브젝트의 단일 유닛(=그룹)을 나타낸다.
 - 
Framework ? 이미 만들어진 구조를 제공한다. 클래스와 인터페이스의 set을 나타낸다.
- 
인터페이스 : Set, List, Queue, Deque, Map
- List와 Set은 Collection 인터페이스를 상속받지만, 구조상의 차이로 Map은 별도로 정의한다.
 
 - 
클래스 : ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet, HashTable, HashMap, SortedMap, TreeMap
 
 - 
 
(…부끄럽지만 일단 올리고 보는 이미지. 아이패드&애플펜슬 필기 연습 좀 해야겠다.)
Collection Interface
대표적인 Collection 인터페이스에는 List, Set, Map이 있다.
| 인터페이스 | 특징 | 
|---|---|
| List | 순서가 있는 데이터의 집합 / 데이터 중복 허용 / 구현 클래스 : ArrayList, LinkedList, Stack, Vector 등 | 
| Set | 순서가 없는 데이터의 집합 / 데이터 중복 허용하지 않음 / 구현 클래스 : HashSet, TreeSet 등 | 
| Map | 키와 값의 쌍으로 이루어진 데이터 집합으로 순서 없음 / 키의 중복을 허용하지 않음 / 구현 클래스 : HashMap, HashTable 등 | 
Collection Interface Method
Collection 인터페이스에서 제공하는 주요 메소드는 다음과 같다.
| 메소드 | 설명 | 
|---|---|
| boolean add(E e) | 컬렉션에 요소를 추가한다. | 
| void clear() | 컬렉션의 모든 요소를 제거한다. | 
| boolean contains(Object o) | 컬렉션이 객체를 포함하고 있는지 확인한다. | 
| boolean equals(Object o) | 컬렉션이 객체와 같은지 확인한다. | 
| boolean isEmpty() | 컬렉션이 비어있는지 확인한다. | 
| Iterator iterator() | 컬렉션의 반복자를 반환한다. (Iterator 인터페이스 상속) | 
| boolean remove(Object o) | 컬렉션에서 객체를 제거한다. | 
| int size() | 컬렉션의 모든 요소의 개수를 반환한다. | 
| Object[] toArray() | 컬렉션의 모든 요소를 Object 타입의 배열로 반환한다. | 
Iterable Interface
Collection 인터페이스는 Iterable 인터페이스를 상속받는다. Root 인터페이스라고 볼 수 있다.
Iterable 인터페이스는 Iterator iterator() 한 개의 추상 메소드를 포함한다.
따라서 Iterable을 상속받는 하위 클래스에서 iterator() 메소드를 구현할 수 있다.
Iterator Interface
Collection, List, Set 인터페이스에서도 Iterator iterator() 처럼 정의만 되어있고,
실제 iterator() 메소드는 하위 클래스(ArrayList, LinkedList, HashSet 등)에서 구현된다.
Iterator Interface Method
Iterator 인터페이스에서 제공하는 주요 메소드는 다음과 같다.
| 메소드 | 설명 | 
|---|---|
| boolean hasNext() | 컬렉션에 다음 요소가 있으면 true, 다음 요소가 없으면 false를 반환한다. | 
| Object next() | 다음 요소를 반환하고 그 다음 요소로 커서를 옮긴다. | 
| void remove() | 요소를 삭제한다. |