컬렉션 프레임워크
다수의 데이터를 다루는 데 필요한 배열과 비슷하지만 더 성능이 뛰어난 많은 클래스들을 제공함
크게 3가지의 그룹이 있는데
- List
- Set
- Map
이 있음. 하지만, Map 인터페이스는 전혀 다른 형태로 컬렉션을 다루기 때문에 상속계층도에 포함되지 않음
| 인터페이스 | 특징 |
| List | 데이터의 중복을 허용하는 순서가 있는 데이터의 집합 클래스: ArrayList, LinkedList 등 |
| Set | 데이터의 중복을 허용하지 않고, 순서를 유지하지 않는 데이터의 집합 클래스: HashSet, TreeSet 등 |
| Map | 키(key)와 값(value)로 이루어진 데이터의 집합 키는 중복을 허용하지 않고, 값의 중복을 허용하며 순서는 유지되지 않음 클래스: HashMap, TreeMap 등 |
Stack, Vactor, Hashtable, Properties와 같이 List, Set, Map가 포함되지 않은 이름의 클래스들은 컬렉션 프레임워크가 만들어지기 이전부터 존재함. 호환을 위해 설계를 변경하며 남겨두었지만, 사용하지 않는 것이 좋음
컬렉션 종류와 특징
List
ArrayList
- 배열기반이며 데이터의 추가와 삭제에 불리하지만, 순차적으로 추가/삭제하는 경우에는 가장 빠름
- 임의의 요소에 대한 접근성이 뛰어남
- 데이터의 저장 순서가 유지되고 중복을 허용함
- 컬렉션 프레임워크에서 가장 많이 사용되는 컬렉션임
LinkedList
- 연결기반이며 중간 데이터를 추가/삭제하는 경우 유리함
- 임의의 요소에 대한 접근성이 나쁨
- 데이터의 저장 순서가 유지되고 중복을 허용함
Set
HashSet
- 배열과 연결이 결합된 Hashing형태로 추가, 삭제, 검색, 접근성이 모두 뛰어남
- 검색에는 최고 성능을 보임
- Set 인터페이스를 구현한 가장 대표적인 컬렉션
- 많은 양의 데이터를 저장하는데 적합함
TreeSet
- 연결기반이며 정렬과 검색(특히 범위 검색)에 적합하지만 검색 능력이 HashSet보다 떨어짐
- 데이터의 저장순서가 유지되지 않고 중복을 허용하지 않음
- 검색과 정렬에 적합함
Map
HashMap
- 키(key)와 값(value)을 묶어 하나의 데이터로 저장함
- 연결기반이며 정렬과 검색(특히 범위검색)에 적합하지만 검색 능력이 HashMap보다 떨어짐
- 검색과 정렬에 적합함
Properties
- Properties(String, String)의 형태로 저장하는 단순화된 컬렉션임
- 주로 애플리케이션의 환경설정과 관련된 속성(property)을 저장하는데 사용하고 데이털르 파일로부터 읽고 쓰는 편리한 기능을 제공함
- 간단한 입출력은 Properties를 활용하면 몇 줄의 코드로 쉽게 해결됨
| 자료구조 | 설명 |
| LinkedList | 각 노드가 서로의 주소를 가지고 있는 구조로 중간에 있는 데이터를 찾거나 수정하는데 강함 |
| Stack | 마지막에 들어간 데이터가 먼저 나오는 구조 |
| Queue | 처음 들어간 데이터가 먼저 나오는 구조 |
| Deque | Stack과 Queue를 합친 구조 |
| Hasing | 배열과 LinkedList의 특성을 합친 구조로 배열 안에 LinkedList가 들어있다고 생각 |
| Tree | 여러 개의 노드가 서로 연결된 구조 각 노드에 최대 2개의 노드를 연결 할 수 있으며 루트(root)라고 불리는 하나의 노드에서부터 계속 확장 가능 |