게으른 개발자의 끄적거림

Map, HashMap, TreeMap, MultiMap 차이

끄적잉 2023. 8. 10. 22:23
728x90

"Map", "HashMap", "TreeMap", 그리고 "MultiMap"은 모두 자바 프로그래밍에서 데이터를 저장하고 관리하기 위한 자료구조입니다. 각각의 구조와 사용법에 대해 자세히 알아보겠습니다.

 

  • Map: Map은 키-값(key-value) 쌍을 저장하는 자료구조로, 특정 키를 통해 해당하는 값을 검색하거나 저장할 수 있습니다. 중복된 키의 값을 저장하지 않으며, 하나의 키에 대응하는 값은 유일해야 합니다. Map은 인터페이스로, 주요 구현 클래스로는 HashMap, TreeMap, LinkedHashMap 등이 있습니다.

 

  • HashMap: HashMap은 해시 테이블을 기반으로 한 Map 구현체입니다. 키와 값은 모두 null이 될 수 있으며, 순서를 보장하지 않습니다. 해시맵은 키의 해시코드를 계산하여 내부 버킷에 매핑하는 방식을 사용하여 데이터를 저장하고 검색합니다. 데이터를 빠르게 검색하고 삽입할 수 있는 특징을 가지며, 평균적으로 O(1)의 시간 복잡도로 검색이 가능합니다.

 

  • TreeMap: TreeMap은 이진 검색 트리를 기반으로 한 Map 구현체입니다. 키들은 정렬된 상태를 유지하며, 키가 Comparable 인터페이스를 구현하거나 Comparator를 제공해야 합니다. 따라서 TreeMap을 사용하면 키들이 정렬된 순서로 데이터에 접근할 수 있습니다. 데이터를 검색하거나 범위 검색(특정 범위 내의 데이터를 검색)을 할 때 유용합니다. 검색과 삽입은 평균적으로 O(log N)의 시간 복잡도를 가집니다.

 

  • MultiMap: MultiMap은 하나의 키에 여러 개의 값을 매핑할 수 있는 자료구조입니다. 자바의 표준 라이브러리에는 MultiMap 인터페이스가 없지만, Apache Commons Collections 라이브러리나 Guava 라이브러리 등에서 이러한 기능을 제공합니다. MultiMap을 사용하면 하나의 키에 여러 값을 연결하여 저장할 수 있습니다. 이는 주로 그룹화된 데이터를 저장하거나 다양한 연관 관계를 표현할 때 유용합니다.

요약하자면, Map은 키-값 쌍을 저장하는 자료구조로, HashMap은 해시 테이블을 기반으로 빠른 검색과 삽입을 제공합니다. TreeMap은 정렬된 상태를 유지하며 키에 기반한 정렬된 데이터 접근을 제공합니다. MultiMap은 하나의 키에 여러 값을 연결하여 저장하는 구조로, 표준 자바 라이브러리에는 없지만 외부 라이브러리를 통해 사용할 수 있습니다.

728x90