[DataStructure] Java Collections (List, Set, Map)
Map ?
- Key, Value로 이뤄진 데이터의 집합
- key의 중복은 허용되지 않고, Value의 중복은 가능하다.
Map의 특징
- Object와 상당히 유사한 순회 가능한 객체
- [K,V]의 형태로 이루어져 있으며, 선언하거나 추가 시 이러한 형태로 값을 넣어주어야 한다.
- [K,V]의 형태에서 key 부분이 어떤 타입이어도 상관없다. Object는 string과 symbol만 가능하다.
Map의 종류
- HashMap
- 순서를 보장하지 않는 map
- Key와 Value로 Null이 허용된다.
- HashTable
- 동기화를 지원하는 map
- Key와 Value로 null이 허용되지 않는다.
- TreeMap
- 이진 검색 Tree 구조의 Map
- 저장 시 Key기준으로 오름차순 저장된다.
- 저장 시 정렬을 하기 때문에 저장 시간이 다소 오래 걸린다.
- 정렬 된 순서로 키/값 쌍을 이루기 때문에 검색이 매우 빠르다.
- LinkedHashMap
- 들어간 순서대로 저장되는 Map
- HashMap을 상속받아서 HashMap과 매우 유사하다.
Set의 특징
- 배열과 유사한 순회 가능한 객체
- value로만 이뤄져 있지만, 값이 키와 동일하게 설정되어 있다.
- List와 달리 중복을 허용 하지 않는다.
Set의 종류
- HashSet
- 순서를 보장하지 않는 Set
- 가장 빠른 임의 접근 속도
- TreeSet
- BinarySearch Tree 구조
- 추가와 삭제에는 시간이 좀 더 걸리지만, 정렬 및 탐색에 성능이 좋다.
- 오름차순으로 데이터 저장
- 정렬 방법 지정 가능
- LinkedHashSet
List와 Set의 차이
- List는 기본적으로 순서대로 들어가며 데이터의 중복을 허용한다.
- Set은 순서가 보장되지 않고 중복 허용하지 않는다.
- Map은 순서가 보장되지 않고, Key 중복은 허용하지 않지만 Value의 중복은 허용한다.