자바 해시맵 그리고 트리맵 둘 다 Java 컬렉션 프레임워크의 클래스입니다. Java Map 구현은 일반적으로 버킷 해시 테이블 역할을 합니다. 버킷이 너무 커지면 노드로 변환됩니다. 트리노드 , 각각은 다음과 유사하게 구성됩니다. java.util.TreeMap .
문자열과 비교
해시맵
HashMap 구현 지도, 복제 가능 그리고 직렬화 가능 상호 작용. 확장됩니다 추상지도 수업. 에 속한다 java.util 패키지.
- HashMap에는 키를 기반으로 한 값이 포함됩니다.
- 단일 null 키와 여러 null 값이 있을 수 있습니다.
- HashMap은 반복하는 동안 순서를 유지하지 않습니다.
- 독특한 요소가 포함되어 있습니다.
- 해싱 원리에 따라 작동합니다.
트리맵
TreeMap 클래스 확장 추상지도 클래스 및 구현 탐색 가능한 지도 , 복제 가능 , 그리고 직렬화 가능 상호 작용. TreeMap은 다음의 예입니다. 정렬된 지도 . 이는 Red-Black 트리로 구현되는데, 이는 키 순서가 정렬되어 있음을 의미합니다.
- TreeMap에는 키에 따른 값도 포함됩니다.
- TreeMap은 키를 기준으로 정렬됩니다.
- 독특한 요소가 포함되어 있습니다.
- Null 키는 가질 수 없지만 여러 개의 Null 값을 가질 수 있습니다.
- 키는 오름차순입니다.
- 객체를 트리 구조로 저장합니다.
HashMap과 TreeMap의 유사점
- 두 수업 모두 확장 추상지도 수업.
- 지도는 저장하는 객체입니다. 핵심 가치 한 쌍. 키-값 쌍에서 각 키는 고유하지만 해당 값은 복제하다 .
- 두 클래스 모두 다음의 매핑을 나타냅니다. 열쇠 에게 가치 .
- 두 맵 모두 아님 동기화됨 .
- 지도 사용 놓다() 지도에 요소를 추가하는 방법입니다.
- 반복자는 ConcurrentModificationException 지도가 어떤 식으로든 수정되면
HashMap과 TreeMap의 주요 차이점은 다음과 같습니다.
해시맵 동안 반복 순서를 유지하지 않습니다. 트리맵 다음을 사용하여 순서를 유지합니다. 비교 대상() 방법이나 비교기 TreeMap의 생성자에 설정됩니다.
스레드.파괴
다음 표에서는 HashMap과 TreeMap의 차이점을 설명합니다.
기초 | 해시맵 | 트리맵 |
---|---|---|
정의 | 자바 해시맵 Map 인터페이스의 해시테이블 기반 구현입니다. | 자바 트리맵 Map 인터페이스의 트리 구조 기반 구현입니다. |
인터페이스 구현 | HashMap 구현 지도, 복제 가능 , 그리고 직렬화 가능 상호 작용. | TreeMap 구현 NavigableMap, 복제 가능 , 그리고 직렬화 가능 상호 작용. |
Null 키/값 | HashMap은 다음을 허용합니다. 하나의 널 키와 다수의 null 값. | TreeMap은 허용하지 않습니다 없는 열쇠는 가질 수 있지만 다수의 null 값. |
동종/이기종 | HashMap은 키에 대한 정렬을 수행하지 않기 때문에 이종 요소를 허용합니다. | TreeMap은 정렬로 인해 동질적인 값을 키로 허용합니다. |
성능 | 해시맵은 더 빠르게 get() 및 put()과 같은 기본 작업에 대해 O(1)의 일정한 시간 성능을 제공하기 때문에 TreeMap보다 좋습니다. | 트리맵은 느린 HashMap과 비교하면 add(), Remove() 및 Contains()와 같은 대부분의 작업에 대해 O(log(n)) 성능을 제공하기 때문입니다. |
데이터 구조 | HashMap 클래스는 해시 테이블 . | TreeMap은 내부적으로 레드 블랙 자체 균형 이진 검색 트리인 트리입니다. |
비교 방법 | 그것은 사용한다 같음() 의 방법 물체 키를 비교하는 클래스입니다. Map 클래스의 equals() 메서드가 이를 재정의합니다. | 그것은 비교 대상() 키를 비교하는 방법. |
기능성 | HashMap 클래스에는 다음과 같은 기본 기능만 포함되어 있습니다. get(), put(), 키셋() , 등. . | TreeMap 클래스에는 다음과 같은 기능이 포함되어 있어 기능이 풍부합니다. tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() . |
요소의 순서 | HashMap은 어떤 순서도 유지하지 않습니다. | 요소는 다음과 같이 정렬됩니다. 자연의 질서 (오름차순). |
용도 | HashMap은 정렬된 순서로 키-값 쌍이 필요하지 않은 경우에 사용해야 합니다. | TreeMap은 정렬된(오름차순) 순서로 키-값 쌍이 필요할 때 사용해야 합니다. |
HashMap과 TreeMap의 예
다음 예에서는 HashMap의 요소가 임의 순서로 정렬되어 있는 반면 TreeMap의 요소는 오름차순으로 정렬되어 있음을 확인할 수 있습니다.
import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } }
산출: