컬렉션 프레임워크란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다.
즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다.
이러한 컬렉션 프레임워크는 자바의 인터페이스를 사용하여 구현된다.
인터페이스 | 특징 |
---|---|
List | 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. ArrayList, LinkedList, Stack, Vector 등 |
Set | 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않음. HashSet, TreeSet 등 |
Map | Key : Value 형태로 이루어진 데이터의 집합. 순서는 유지되지 않고, 키는 중복을 허용하지 않으며 값은 중복을 허용한다. HashMap, TreeMap, HashTable, Properties 등 |
List
와 Set
인터페이스는 모두 Collection
인터페이스를 상속받지만, 구조상의 차이로 인해 Map
인터페이스는 별도로 정의된다.
Collections
는 컬렉션을 위한 메서드(static)를 제공한다.
fill() // 컬렉션 채우기
copy() // 컬렉션 복사
sort() // 정렬
binarySearch() // 이진 검색
static XXX synchronizedXXX()
Vector
등의 옛날 컬렉션은 자동적으로 동기화 기능이 있었지만, ArrayList
등의 새로운 컬렉션은 수동으로 동기화를 해주어야 한다. 동기화가 제공되는 것이 무조건적으로 좋은 것이 아니라 실행 속도 측면에서 성능의 차이가 있기 때문에 상황에 따라서 적절하게 사용하는 것이 좋다.
static XXX unmodifiableXXX()
컬렉션에 저장된 데이터를 보호하기 위해 변경할 수 없도록 읽기 전용으로 만드는 기능이 있다. 하나의 컬렉션을 공유하다보면 데이터가 변경될 수 있는 데 이를 방지하기 위해 unmodifiableXXX()
를 사용한다.
static List singletonList(Object o)
static Set singleton(Object o)
static Map singletonMap(Object key, Object value)
컬렉션을 new
생성자가 아닌 메서드로 생성함으로써 싱글톤 패턴을 활용하여 인스턴스의 개수를 제한할 수 있다.