컬렉션 프레임워크란?
좋은 건물을 짓기 위해서는 구조를 탄탄하게 설계해둬야 하는 것처럼, 프로그램을 개발할 때에도 사용되는 자료를 어떤 구조로 관리 할 것인지가 중요해. 그래야 프로그램의 기능을 보다 효율적이고 효과적으로 구현할 수 있거든. 이 때 사용하는 것이 자료구조
인데, 필요한 자료구조를 자바에서 미리 구현하여 제공하는 것을 컬렉션 프레임워크
라고 해.
자료구조 : 프로그램 실행 중 메모리에 자료를 유지, 관리하기 위해 사용
컬렉션 프레임워크는 Collection 인터페이스와 Map 인터페이스를 기반으로 이루어져 있어. Collection 인터페이스는 하나의 자료를 모아서 관리하는 데 필요한 기능
을 제공하고, Map인터페이스는 쌍으로 된 자료들을 관리하는 데 유용한 기능
을 제공해.
각 인터페이스의 특징
인터페이스 | 포함 클래스 | 특징 |
---|---|---|
List | LinkedList Stack Vector ArrayList |
순서가 있는 데이터의 집합, 중복 허용 |
Set | HashSet TreeSet |
순서가 없는 데이터의 집합, 중복 허용 X |
Map | Hashtable HashMap TreeMap |
키와 값의 쌍으로 된 데이터의 집합. 순서 없음. 키는 중복 불가, 값은 중복 가능 |
인터페이스에 포함되어 있는 클래스의 특성들도 하나씩 알아보자.
List 자료구조
클래스명 | 특징 |
---|---|
LinkedList | - 양방향 포인터 구조로 데이터의 삽입/삭제가 잦을 경우 빠른 성능 보장 - 스택, 큐, 양방향 큐 등을 만드는 용도로 쓰임 - Iterator를 사용한다 -주로 순서가 없는 자료구조의 값들을 추출할 때 사용한다 |
Vector | - ArrayList의 구형버전 - 모든 메소드가 동기화 되어있고, 느린 편 - 최근에는 잘 사용되지 않음 |
ArrayList | - 크기를 마음대로 조절할 수 있는 배열 - 처리 속도가 빠른 편 -단방향 포인터 구조로 순차적으로 자료에 접근할 때 유리 |
Set 자료구조
클래스명 | 특징 |
---|---|
HashSet | - 가장 빠른 속도 - 순서를 예측할 수 없음 |
TreeSet | - 정렬된 순서대로 보관. 정렬 방법을 지정할 수 있음 - HashSet보다 느림 |
LinkedHashSet | - 저장된 순서에 따라 값이 정렬됨 - 셋중에 가장 느림 |
Map 자료구조
클래스명 | 특징 |
---|---|
HashMap | - Map인터페이스를 사용하기 위해 해시테이블을 사용한 클래스 - 중복을 허용하지 않음 - 순서를 보장하지 않음 - 키와 값으로 null 사용 가능 |
Hashtable | - HashMap보다는 느리지만 동기화가 지원된다 -키와 값으로 null 사용 불가 |
TreeMap | - 이진검색트리의 형태로 키와 값의 쌍으로 된 데이터를 저장 - 정렬된 순서로 키/값 쌍을 저장하므로 빠른 검색이 가능 - 저장 시 정렬(오름차순)을 하기 때문에 저장시간이 다소 오래걸린다 |