logo

Razlika između HashMapa i TreeMapa

Java HashMap i TreeMap obje su klase okvira Java Collections. Implementacija Java karte obično djeluje kao raspršena tablica raspršivanja. Kada kante postanu prevelike, pretvaraju se u čvorove Čvorovi stabla , svaki strukturiran slično onima u java.util.TreeMap .

HashMap

HashMap implementira Karta, mogućnost kloniranja i Serializable sučelje. Proteže se SažetakMap razreda. Pripada java.util paket.

  • HashMap sadrži vrijednost temeljenu na ključu.
  • Može imati jedan null ključ i više null vrijednosti.
  • HashMap ne održava red tijekom ponavljanja.
  • Sadrži jedinstvene elemente.
  • Radi na principu raspršivanja.

TreeMap

TreeMap klasa se proširuje SažetakMap razreda i pribora NavigableMap , Može se klonirati , i Serializable sučelje. TreeMap je primjer a SortedMap . Implementiran je crveno-crnim stablom, što znači da je redoslijed tipki sortiran.

  • TreeMap također sadrži vrijednost temeljenu na ključu.
  • TreeMap je poredan po ključevima.
  • Sadrži jedinstvene elemente.
  • Ne može imati null ključ, ali ima više null vrijednosti.
  • Ključevi su poredani uzlaznim redoslijedom.
  • Pohranjuje objekt u strukturi stabla.

Sličnosti između HashMapa i TreeMapa

    HashMapi TreeMap razredi implementirati Može se klonirati i Serializable sučelje.
  • Obje se klase proširuju SažetakMap razreda.
  • Mapa je objekt koji pohranjuje ključ-vrijednost parovi. U paru ključ-vrijednost svaki ključ je jedinstven, ali njihove vrijednosti mogu biti jedinstvene duplikat .
  • Obje klase predstavljaju preslikavanje iz ključ do vrijednosti .
  • Obje karte nisu sinkronizirano .
  • Korištenje karte staviti() metoda za dodavanje elementa na kartu.
  • Iterator baca a ConcurrentModificationException ako se karta na bilo koji način izmijeni.

Ključna razlika između HashMapa i TreeMapa je:

HashMap ne čuva redoslijed ponavljanja dok TreeMap očuvati red korištenjem usporedi s() metoda ili a komparator postaviti u konstruktoru TreeMapa.

Sljedeća tablica opisuje razlike između HashMapa i TreeMapa.

Osnova HashMap TreeMap
Definicija Java HashMap je implementacija sučelja karte temeljena na tablici raspršivanja. Java TreeMap je implementacija sučelja karte temeljena na strukturi stabla.
Implementi sučelja HashMap implementira Karta, mogućnost kloniranja , i Serializable sučelje. TreeMap implementira Navigabilna karta, klonirana , i Serializable sučelje.
Null ključevi/vrijednosti HashMap omogućuje a singl nulti ključ i višestruki nulte vrijednosti. TreeMap ne dopušta ništavan ključeve ali može imati višestruki nulte vrijednosti.
Homogeno/heterogeno HashMap dopušta heterogene elemente jer ne vrši sortiranje po ključevima. TreeMap dopušta homogene vrijednosti kao ključ zbog sortiranja.
Izvođenje HashMap je brže nego TreeMap jer pruža izvedbu u konstantnom vremenu koja je O(1) za osnovne operacije kao što su get() i put(). TreeMap je usporiti u usporedbi s HashMapom jer pruža performanse O(log(n)) za većinu operacija kao što su add(), remove() i contains().
Struktura podataka Klasa HashMap koristi hash tablica . TreeMap interno koristi a Crveno-crno stablo, koje je samo-balansirajuće binarno stablo pretraživanja.
Metoda usporedbe Koristi se jednako() metoda Objekt klasa za usporedbu ključeva. Metoda equals() klase Map je nadjačava. Koristi se usporedi s() metoda za usporedbu ključeva.
Funkcionalnost Klasa HashMap sadrži samo osnovne funkcije kao što su get(), put(), KeySet() , itd. Klasa TreeMap je bogata funkcionalnošću jer sadrži funkcije kao što su: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Redoslijed elemenata HashMap ne održava nikakav red. Elementi su poredani prirodni poredak (uzlazni).
Koristi HashMap treba koristiti kada ne trebamo par ključ-vrijednost u sortiranom redoslijedu. TreeMap treba koristiti kada trebamo par ključ-vrijednost u sortiranom (uzlaznom) redoslijedu.

Primjer HashMap vs TreeMap

U sljedećem primjeru možemo uočiti da su elementi HashMapa raspoređeni nasumičnim redoslijedom, dok su elementi TreeMapa raspoređeni uzlaznim redoslijedom.

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

Izlaz:

Razlika između HashMapa i TreeMapa