source

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

goodcode 2022. 8. 15. 21:11
반응형

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

자바를 배우기 시작했어요.언제 TreeMap에서 HashMap을 사용할 수 있습니까?

TreeMap 는 의 예입니다.즉, 키의 순서를 정렬할 수 있으며, 키를 반복할 때는 순서대로 정렬할 수 있습니다.

HashMap 반면에, 그런 보장은 없습니다.그 때문에, 키상에서 반복하는 경우는,HashMap순서가 어떻게 될지 알 수 없습니다.

HashMap일반적으로는 더 효율적이기 때문에 키의 순서가 신경 쓰지 않을 때 사용합니다.

HashMap는 해시 테이블에 의해 구현되며,TreeMap에 의해 구현됩니다.Red-Black tree의 주요 차이점은 다음과 같습니다.HashMap그리고.TreeMap사이의 주된 차이를 실제로 반영하다Hash및 aBinary Tree즉, 반복할 때 TreeMap은 요소의 compareTo() 메서드 또는 TreeMap의 컨스트럭터 내의 비교기 세트에 의해 결정되는 키의 순서를 보증할 수 있습니다.

다음 그림을 보세요.

여기에 이미지 설명 입력

정리하면:

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

취득처:해시맵과 트리 맵

사용하다HashMap대부분의 경우 사용하지만TreeMap키를 정렬해야 할 때(키를 반복해야 할 때)

Java에서의 HashMapTreeMap 구현에 대해 설명하겠습니다.

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

    1. 버킷 배열에 의해 구현되며 각 버킷은 엔트리의 LinkedList입니다.
    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 사이의 가장 큰 차이점은 TreeMap 요약하자면을 행 한다, HashMap과 TreeMap의 가장 큰 차이점은 TreeMap이있다는 것입니다 구현되어.NavigableMap<K,V>순서부여된 반복 기능을 제공합니다.또한 HashMap과 TreeMap은 모두 Java Collection 프레임워크의 멤버입니다.Java의 소스 코드를 조사하여 구현에 대해 자세히 알아볼 수 있습니다.

거의 언제나거의 항상 사용하시잖아요를 사용한다.HashMap, 여러분은 겨우 를사용해야 합니다를 사용해야 한다.TreeMap만약 당신이 특정 순서로 당신의 열쇠가 필요해요키를 특정 순서로 정렬할 필요가 있는 경우.

HashMap빠른 조회에,고속검색에 사용됩니다는 반면에 사용됩니다.TreeMap정렬된 반복의 지도를 사용합니다.맵에서정렬된 반복에 사용됩니다.

정렬된 키 저장소와 함께 TreeMap과 다른 점은 개발자가 (String) 줄 수 있다는 것입니다.CASE_INSECTIVE_ORDER)와 String 키를 함께 사용하므로 비교기는 맵액세스에서 키를 비교할 때 키의 대소문자를 무시합니다.HashMap에서는 이러한 옵션을 제공할 수 없습니다.HashMap에서는 항상 대소문자가 구분됩니다.

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

반응형