HashMap, LinkedHashMap, TreeMap의 특성과 차이

2021. 2. 17. 21:00Study

HashMap

 

- 내부적으로 Entry<K,V>[] Entry 의 array 로 되어 있으며, 해당 array 에 index 는 내부 해쉬 함수를 통해 계산됩니다.

- HashMap은 Map 인터페이스의 한 종류로 Key와 Value 한 쌍을 데이터로 가지고 있으며 Key를 통해 Value에

   접근할 수 있습니다.

- HashMap은 그 안에 들어있는 데이터를 Set 구조(key,value)로 저장하기 때문에

   Set의 원칙대로 중복된 데이터를 허락하지 않으면서 순서가 없습니다.

- hashing을 사용하기 때문에 많은양의 데이터를 검색하는데 뛰어난 성능을 가지고 있습니다.

 

LinkedHashMap

 

- LinkedHashMap은 순서를 유지하기 위해 이중 연결 리스트 Doubly Linked List를 사용합니다.

- FIFO (First In First Out) 구조로 데이터를 저장합니다.

- HashMap의 모든 기능을 그대로 사용할 수 있습니다.

- 순서를 유지하기 때문에 메모리 사용량이 HashMap보다 높습니다.

 

TreeMap

 

- key 값에 따라서 자동으로 Sort가 되는 방식입니다.

- 동기화(synchronized) 처리가 되어 있어 Thread-safe 합니다.

- HashMap과는 다르게 Key 값으로 null을 허용하지 않습니다.

- 내부적으로 RedBlack Tree로 저장되며, 키값에 대한 Compartor 구현으로 정렬 순서를 바꿀수 있습니다.

 

결론

 

특별한 사유가 없다면 검색 성능이 좋은 HashMap을 사용

순서를 보장하고 싶다면 LinkedHashMap을 사용

키값을 일정하게 iterate 하고자한다면 TreeMap을 사용