Map VS Hashmap VS Set
Map
- Key와 Value의 한 쌍으로 이루어지는 데이터의 집합.
- Key에 대한 중복이 없으며, 순서를 보장하지 않음.
- 뛰어난 검색 속도를 가짐.
- 인덱스가 따로 존재하지 않아 iterator를 사용.
Map의 종류와 특징
- HashMap
- Key에 대한 중복이 없으며, 순서를 보장하지 않음.
- Key와 Value 값에 NULL을 허용.
- 동기화가 보장되지 않음.
- 검색에 가장 뛰어남
- HashTable
- 동기화가 보장되며, 병렬 프로그래밍이 가능함
- HashMap보다 처리속도가 느림.
- Key와 Value 값에 NULL을 허용하지 않음.
- LinkedHashMap
- TreeMap
- 이진 탐색 트리(Binary Search Tree)를 기반으로 Key와 Value를 저장.
- Key 값을 기준으로 오름차순 정렬.
- 빠른 검색이 가능.
- 저장 시 정렬을 진행하기 때문에 시간이 다소 걸림.
HashMap
- Map의 종류 중 하나로, Map의 특징인 Key와 Value의 한 쌍으로 이루어지는 데이터 집합.
- Key에 대한 중복이 없으며, 순서를 보장하지 않음.
- Key와 Value 값에 NULL을 허용.
- 동기화가 보장되지 않음.
- 검색에 가장 뛰어남
Map과 HashMap의 차이
특정 Key에 대한 Value을 찾는 과정에서, HashMap은 HashTable을 이용해서 Key-Value 관계를 유지하고, Map은 Red-Black Tree(이진 탐색 트리)를 이용.
Set
- 데이터의 집합으로, 순서가 없고, 중복된 데이터를 허용하지 않음.
- 중복되지 않은 데이터를 구할 때 유용.
- 빠른 검색 속도를 가짐.
- 인덱스가 따로 존재하지 않아 iterator를 사용.
Set의 종류와 특징
- HashSet
- instance의 hash값을 기준으로 저장.
- 순서를 보장하지 않음.
- NULL 값을 허용.
- TreeSet보다 삽입, 삭제가 빠름.
- LinkedHashSet
- TreeSet
- 이진 탐색 트리(Red-Black Tree)를 기반으로 함.
- 데이터들이 오름차순으로 정렬.
- 데이터 삽입, 삭제에는 시간이 걸리지만, 정렬은 빠름.
요약
- Map은 순서가 보장되지 않고, Key 값의 중복은 허용하지 않지만, Value 값의 중복은 허용.
- HashMap은 Map의 종류 중 하나로, Map의 특징 + NULL값 허용, 검색에 뛰어남
- Set은 순서가 보장되지 않고, 데이터의 중복을 허용하지 않음.