[간단정리] List, Set, Map 특징 및 차이점(+ 구현체 )
개요
자료구조 List, Set, Map의 각각 특징 및 차이점에 대해 알아보자 |
요약
List: 순서가 있으며, 데이터(값) 중복 허용 Set: 순서가 없으며, 데이터(값) 중복을 허용하지 않음 Map: Key&Value 구조, Key는 중복을 허용하지 않으며, Value(값)는 중복을 허용 * 각각 인터페이스의 구현체별 특징까지 확인 필요! * 포스팅된 내용외에 각 인터페이스별 다양한 구현체 존재 |
내용
Collection(컬렉션)
- Java에서 Collection(컬렉션)이란 데이터의 집합, 그룹을 의미
- JCF(Java Collection Framework)는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는
표준화된 방법을 제공하는 클래스의 집합을 의미
Collection 주요 인터페이스
- List: 순서가 있으며, 데이터(값) 중복 허용
- Set: 순서가 없으며, 데이터(값) 중복을 허용하지 않음
- Map: Key&Value 구조, Key는 중복을 허용하지 않으며, Value(값)는 중복을 허용
List
- 입력 순서를 유지하며, 데이터의 중복을 허용
- 인덱스를 통해 저장 데이터에 접근이 가능
List 인터페이스의 주요 구현체
- ArrayList
- 단반향 포인터 구조 데이터 순차적 접근(조회)가 빠름
- LinkedList
- 양방향 포인터 구조 데이터 삽입, 삭제가 빠름
Set
- 입력 순서를 유지하지 않으며, 데이터의 중복 허용하지 않음
- 데이터에 null 입력 가능하나, 한 번만 저장하고 중복 저장을 허용하지 않음
- 인덱스가 따로 존재하지 않기 때문에 Iterator를 사용하여 조회
Set 인터페이스의 주요 구현체
- HashSet
- 입력 순서를 보장하지 않으며, 데이터의 중복을 허용하지 않음
- LinkedHashSet
- 입력 순서를 보장하며, 데이터의 중복을 허용하지 않음
- TreeSet
- (default) 입력한 데이터의 크기가 비교 가능한 경우 오름차순으로 정렬되며, 데이터의 중복을 허용하지 않음
- 입력하는 데이터가 사용자 정의 객체인 경우 Comparable을 구현하여, 정렬 기준 설정 가능
Map
- Key&Value 구조
- Key(키)는 입력 순서를 유지하지 않으며, 중복을 허용하지 않음, Value(값)는 중복을 허용
- 인덱스가 따로 존재하지 않기 때문에 Iterator를 사용하여 조회
Map 인터페이스의 주요 구현체
-HashMap
- Key(키)에 대한 입력 순서를 보장하지 않으며, 중복 Key(키)를 허용하지 않음
- LinkedHashMap
- Key(키)에 대한 입력 순서를 보장하며, 중복 Key(키)를 허용하지 않음
- TreeMap
- 레드-블랙 트리(Red-Black Tree)를 기반으로 Key&Value를 저장
- (default) 입력한 Key(키)데이터의 크기가 비교 가능한 경우 오름차순으로 정렬되며, 중복 Key(키)를 허용하지 않음
- 입력하는 데이터가 사용자 정의 객체인 경우 Comparable을 구현하여, 정렬 기준 설정 가능
List, Set, Map 주요 특징 정리
인터페이스 | 구현체 | 순서유지 | 중복허용 | 기타 |
List | ArrayList | O | O | |
LinkedList | O | O | ||
Set | HashSet | X | X | |
LinkedHashSet | O | X | ||
TreeSet | X | X | 입력순서는 유지하지 않으나, 입력된 데이터에 따라 정렬되어 저장 |
|
Map | HashMap | X | Key: X / Value: O | |
LinkedHashMap | O | Key: X / Value: O | ||
TreeMap | X | Key: X / Value: O | 입력순서는 유지하지 않으나, 입력된 Key(키)데이터에 따라 정렬되어 저장 |