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
- 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: