자바의 컬렉션 프레임워크(Collection Framework)는 다수의 데이터를 효율적으로 저장, 관리, 조작할 수 있도록 표준화된 데이터 구조와 알고리즘을 제공하는 클래스와 인터페이스의 집합이다. 배열(Array)이 고정된 크기만을 지원하는 한계를 극복하기 위해 가변 크기의 데이터 구조를 제공하며, 표준화된 인터페이스를 통해 일관된 방식으로 데이터를 다룰 수 있게 해준다.
자바 컬렉션 프레임워크는 크게 Collection 인터페이스와 Map 인터페이스 두 개의 주요 줄기로 나뉜다.
Iterable
│
Collection
┌──────────────┼──────────────┐
List Set Queue
│ │ │
ArrayList HashSet LinkedList
LinkedList TreeSet ArrayDeque
Vector
(※ Map 인터페이스는 구조상의 이유로 Collection을 상속받지 않고 독립적으로 존재한다.)
순서가 있는 데이터의 집합이며, 데이터의 중복을 허용한다.
get) 속도가 빠르다(). 반면, 중간에 데이터를 삽입하거나 삭제할 때는 요소들의 이동이 필요하여 성능이 저하된다.순서를 유지하지 않는 데이터의 집합이며, 중복을 허용하지 않는다.
hashCode()와 equals() 메서드를 활용한다.키(Key)와 값(Value)의 쌍으로 데이터를 관리한다. 키는 중복될 수 없으나, 값은 중복을 허용한다.
Hashtable 대비 높은 성능을 발휘하도록 분할 Lock 메커니즘을 사용한다.Stack 클래스 대신 Deque 인터페이스를 사용하는 것이 권장된다.LinkedList나 ArrayDeque로 구현하여 사용한다.자바 컬렉션 프레임워크는 상황에 맞는 최적의 데이터 구조를 선택할 수 있게 해준다. 순서가 중요하고 중복 조회가 빈번하다면 List(ArrayList), 중복을 제거해야 한다면 Set(HashSet), 키-값 형태의 매핑 데이터라면 Map(HashMap)을 선택하는 것이 기본 규칙이다.