Programming

HashMap과 TreeMap의 차이점은 무엇입니까?

procodes 2020. 6. 4. 21:13
반응형

HashMap과 TreeMap의 차이점은 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

나는 자바를 배우기 시작했다. TreeMap에서 HashMap을 언제 사용합니까?


TreeMap의 예는 SortedMap키의 순서를 정렬 할 수 있음을 의미하며 키를 반복 할 때 순서대로 정렬 될 것으로 예상 할 수 있습니다.

HashMap반면에, 그런 보장을하지 않습니다. 따라서의 키를 반복 할 때 HashMap순서가 어떤지 확실하지 않습니다.

HashMap 일반적으로 더 효율적이므로 키 순서에 신경 쓰지 않을 때마다 사용하십시오.


HashMap은 해시 테이블에 의해 구현되고에 의해 TreeMap구현됩니다 Red-Black tree. 주요 차이점 HashMapTreeMap실제로는 주요 차이점 반영 Hash하고을 Binary Tree, 즉, 순회가 트리 맵 보장 어느 요소의 compareTo와 () 메소드 또는 트리 맵의 생성자 비교기 세트에 의해 키 순서 판단 할 수있는 경우.

다음 다이어그램을 살펴보십시오 .

여기에 이미지 설명을 입력하십시오


요약하면 :

  • HashMap : hashCode (), equals () 구현, 삽입 및 검색을위한 O (1) 런타임 복잡성, 정렬되지 않은 정렬 배열 구조
  • TreeMap : compareTo () 구현을 기반으로 한 트리 구조, 삽입 및 검색을위한 O (log (N)) 런타임 복잡성, 정렬

에서 촬영 : HashMap에 대 트리 맵


사용 HashMap시간이지만 사용의 대부분을 TreeMap당신은 정렬 할 키를 필요로 할 때 (당신이 키를 반복해야하는 경우).


Java에서 HashMapTreeMap 구현에 대해 이야기하겠습니다 .

  • HashMap-기본 맵 인터페이스 구현

    1. 버킷 배열로 구현되는 각 버킷은 항목의 링크 된 목록입니다.
    2. 기본 작업 실행 시간 : put (), 평균 O (1), 최악의 경우 O (n)은 테이블 크기를 조정할 때 발생합니다. get (), remove (), 평균 O (1)
    3. 동기화하지 않으려면 동기화하십시오. Map m = Collections.synchronizedMap(new HashMap(...));
    4. 지도의 반복 순서는 예측할 수 없습니다.
  • TreeMap-탐색 가능한지도 인터페이스 구현

    1. 레드 블랙 트리에 의해 구현
    2. 기본 작업 실행 시간 : put (), get (), remove (), 최악의 경우 O (lgn)
    3. 동기화하지 않으려면 동기화하십시오. SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
    4. 정렬 된 반복을 제공하십시오. higherKey (), lowerKey ()는 주어진 키의 후속 작업 및 선행 작업을 얻는 데 사용될 수 있습니다.

요약하자면, HashMap과 TreeMap의 가장 큰 차이점 NavigableMap<K,V>은 순서화 된 반복 기능을 제공 하는 TreeMap 구현 입니다. 또한 HashMap과 TreeMap은 모두 Java Collection 프레임 워크의 멤버입니다. Java 소스 코드를 조사하여 해당 구현에 대해 자세히 알 수 있습니다 .


거의 항상을 사용 합니다. 키가 특정 순서로 HashMap있어야하는 TreeMap경우 에만 사용해야 합니다.


HashMap빠른 조회에 TreeMap사용되는 반면 맵에서 정렬 된 반복에 사용됩니다.


정렬 된 키 저장소와 함께 TreeMap의 또 다른 차이점은 개발자가 String 키로 (String.CASE_INSENSITIVE_ORDER)를 줄 수 있으므로 비교기는 맵 액세스에서 키 비교를 수행하는 동안 키의 경우를 무시합니다. HashMap에서는 이러한 옵션을 제공 할 수 없습니다. 항상 HashMap에서 대소 문자를 구분합니다.

참고 URL : https://stackoverflow.com/questions/2444359/what-is-the-difference-between-a-hashmap-and-a-treemap

반응형