[ Map ]
- Python의 딕셔너리처럼 key와 value 로 구성 되어 있으며 Key : value를 묶어 하나의 entry 형식으로 저장
- HashMap / TreeMap / LinkedHashMap 총 3가지가 있음
- key는 중복 허용 x, value는 중복 허용(null도 가능)
- 데이터 삽입 put
- 데이터 추출은 get(키를 가지고)
- a.containsKey(word) <- word가 키에 있는지 판단
1. HaspMap
- 내부 hash 값에 따라서 키 순서가 정해져서 특정 규칙없이 출력
- O(1) <- 검색 성능 good
ex. Map<String, Double> a = new HashMap<>();
2. TreeMap
- 키 값이 알파벳 순서대로 정렬
- 키와 값을 한 쌍으로 하는 데이터를 이진 검색 트리의 형태로 저장되기에 키 값은 일정 기준으로 정렬된 상태로 출력(red-balck tree)
- 데이터를 추가하거나 제거하는 등의 기본 동작 시간이 매우 빠름
- 일정한 수준의 키 값으로 증감하는 경우 사용 good / 랜덤 접근에서는 O(log n) <- 데이터가 많을수록 성능 bad
3. LinkedHashMap
- 키 값이 입력 순서대로 출력되서 나옴
- O(1)의 시간 복잡도를 갖지만 불필요하게 linked-list를 유지하는 비용이 생길 수 있음
- 입력 순서에 의미가 있을 경우 사용 good / 랜던 접근에 대해는 O(n) 성능을 지니므로 데이터가 많을 수록 성능 bad
결론 :
TreeMap, LinkedHashMap이 굳이 필요한 순간이 아니라면 HashMap을 사용하는 방법이 좋다.