logo

Różnica między HashMap i TreeMap

Jawa HashMapa I Mapa Drzewa obie są klasami frameworka Java Collections. Implementacja Java Map zwykle działa jak zbiorcza tabela skrótów. Kiedy wiadra stają się zbyt duże, przekształcają się w węzły Węzły drzewa , każdy zbudowany podobnie do tych w Java.util.Mapa drzewa .

HashMapa

Implementacje HashMap Mapa, którą można sklonować I Możliwość serializacji interfejs. Rozciąga się StreszczenieMapa klasa. To należy do Java.util pakiet.

  • HashMap zawiera wartość opartą na kluczu.
  • Może mieć pojedynczy klucz zerowy i wiele wartości zerowych.
  • HashMap nie utrzymuje porządku podczas iteracji.
  • Zawiera unikalne elementy.
  • Działa na zasadzie hashowania.

Mapa Drzewa

Klasa TreeMap rozszerza się StreszczenieMapa klasa i narzędzia Mapa żeglowna , Możliwość klonowania , I Możliwość serializacji interfejs. TreeMap jest przykładem Posortowana mapa . Realizuje się to poprzez drzewo czerwono-czarne, co oznacza, że ​​kolejność kluczy jest sortowana.

  • TreeMap zawiera również wartość opartą na kluczu.
  • TreeMap jest sortowany według kluczy.
  • Zawiera unikalne elementy.
  • Nie może mieć klucza zerowego, ale może mieć wiele wartości zerowych.
  • Klucze są w kolejności rosnącej.
  • Przechowuje obiekt w strukturze drzewa.

Podobieństwa między HashMap i TreeMap

    HashMapaI Mapa Drzewa zajęcia wdrażają Możliwość klonowania I Możliwość serializacji interfejs.
  • Obie klasy się wydłużają StreszczenieMapa klasa.
  • Mapa to obiekt przechowujący kluczowa wartość pary. W parze klucz-wartość każdy klucz jest unikalny, ale ich wartości mogą być duplikować .
  • Obie klasy reprezentują mapowanie z klucz Do wartości .
  • Obie mapy nie zsynchronizowane .
  • Korzystanie z mapy umieścić() metoda dodania elementu na mapie.
  • Iterator wyrzuca a Wyjątek ConcurrentModificationException jeśli mapa zostanie w jakikolwiek sposób zmodyfikowana.

Kluczowa różnica między HashMap i TreeMap to:

HashMapa nie zachowuje kolejności iteracji, podczas gdy Mapa Drzewa zachowaj porządek za pomocą porównać do() metoda lub komparator ustawione w konstruktorze TreeMap.

W poniższej tabeli opisano różnice między HashMap i TreeMap.

Podstawa HashMapa Mapa Drzewa
Definicja Jawa HashMapa jest implementacją interfejsu Map opartą na tablicach haszujących. Jawa Mapa Drzewa to oparta na strukturze drzewa implementacja interfejsu Map.
Implementacje interfejsu Implementacje HashMap Mapa, którą można sklonować , I Możliwość serializacji interfejs. Narzędzia TreeMap NavigableMap, możliwość klonowania , I Możliwość serializacji interfejs.
Klucze/wartości zerowe HashMap umożliwia pojedynczy klucz zerowy i wiele wartości zerowe. TreeMap nie pozwala zero klucze, ale mogę mieć wiele wartości zerowe.
Jednorodne/niejednorodne HashMap pozwala na elementy heterogeniczne, ponieważ nie wykonuje sortowania według kluczy. TreeMap dopuszcza jednorodne wartości jako klucz ze względu na sortowanie.
Wydajność HashMap jest szybciej niż TreeMap, ponieważ zapewnia stałą wydajność, czyli O(1) dla podstawowych operacji, takich jak get() i put(). TreeMap jest powolny w porównaniu do HashMap, ponieważ zapewnia wydajność O(log(n)) dla większości operacji, takich jak add(), usuń() i zawiera().
Struktura danych Klasa HashMap używa metody tablica mieszająca . TreeMap wewnętrznie używa a Czerwony czarny drzewo, które jest samobalansującym drzewem wyszukiwania binarnego.
Metoda porównawcza To używa równa się() metoda Obiekt klasa do porównywania kluczy. Metoda równości() klasy Map zastępuje ją. Używa porównać do() metoda porównywania kluczy.
Funkcjonalność Klasa HashMap zawiera tylko podstawowe funkcje, takie jak get(), put(), KeySet() , itp. . Klasa TreeMap jest bogata w funkcjonalność, gdyż zawiera funkcje takie jak: tailMap(), FirstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Kolejność elementów HashMap nie utrzymuje żadnego porządku. Elementy są posortowane naturalny porządek (rosnąco).
Używa HashMap należy używać, gdy nie potrzebujemy pary klucz-wartość w posortowanej kolejności. TreeMap powinien być używany, gdy wymagana jest para klucz-wartość w posortowanej (rosnącej) kolejności.

Przykład HashMap vs TreeMap

W poniższym przykładzie możemy zaobserwować, że elementy HashMap są ułożone w kolejności losowej, natomiast elementy TreeMap są ułożone w kolejności rosnącej.

 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()); } } } 

Wyjście:

Różnica między HashMap i TreeMap