logo

Razlika med HashMap in TreeMap

Java HashMap in TreeMap oba sta razreda ogrodja zbirk Java. Implementacija Java Map običajno deluje kot razpršena zgoščena tabela. Ko vedra postanejo prevelika, se spremenijo v vozlišča TreeNodes , vsaka je strukturirana podobno kot v java.util.TreeMap .

HashMap

HashMap izvaja Zemljevid, možnost kloniranja in Serializable vmesnik. Razširja se AbstractMap razred. Pripada java.util paket.

  • HashMap vsebuje vrednost na podlagi ključa.
  • Lahko ima en sam ničelni ključ in več ničelnih vrednosti.
  • HashMap med ponavljanjem ne ohranja reda.
  • Vsebuje edinstvene elemente.
  • Deluje na principu zgoščevanja.

TreeMap

Razred TreeMap se razširi AbstractMap razreda in pripomočkov NavigableMap , Klonirati , in Serializable vmesnik. TreeMap je primer a SortedMap . Izvaja se z drevesom Rdeče-črno, kar pomeni, da je vrstni red tipk razvrščen.

  • TreeMap vsebuje tudi vrednost na podlagi ključa.
  • TreeMap je razvrščen po ključih.
  • Vsebuje edinstvene elemente.
  • Ne more imeti ničelnega ključa, vendar ima več ničelnih vrednosti.
  • Ključi so v naraščajočem vrstnem redu.
  • Objekt shrani v drevesno strukturo.

Podobnosti med HashMap in TreeMap

    HashMapin TreeMap razredi izvajajo Klonirati in Serializable vmesnik.
  • Oba razreda se razširita AbstractMap razred.
  • Zemljevid je objekt, ki shranjuje ključ-vrednost parov. V paru ključ-vrednost je vsak ključ edinstven, njihove vrednosti pa so lahko edinstvene dvojnik .
  • Oba razreda predstavljata preslikavo iz ključ do vrednote .
  • Oba zemljevida nista sinhronizirano .
  • Uporaba zemljevida daj() način dodajanja elementa na zemljevid.
  • Iterator vrže a ConcurrentModificationException če se zemljevid kakor koli spremeni.

Ključna razlika med HashMap in TreeMap je:

HashMap ne ohrani vrstnega reda ponovitev, medtem ko TreeMap ohranjanje reda z uporabo primerjaj z () metoda ali a primerjalnik nastavite v konstruktorju TreeMap.

Naslednja tabela opisuje razlike med HashMap in TreeMap.

Osnova HashMap TreeMap
Opredelitev Java HashMap je izvedba vmesnika Map, ki temelji na zgoščeni tabeli. Java TreeMap je implementacija vmesnika Zemljevid na osnovi drevesne strukture.
Vmesniški elementi HashMap izvaja Zemljevid, možnost kloniranja , in Serializable vmesnik. TreeMap izvaja NavigableMap, Cloneable , in Serializable vmesnik.
Ničelni ključi/vrednosti HashMap omogoča a samski ničelni ključ in večkraten ničelne vrednosti. TreeMap ne dovoljuje nič ključe pa lahko večkraten ničelne vrednosti.
Homogeno/heterogeno HashMap omogoča heterogene elemente, ker ne izvaja razvrščanja po ključih. TreeMap omogoča homogene vrednosti kot ključ zaradi razvrščanja.
Izvedba HashMap je hitreje kot TreeMap, ker zagotavlja zmogljivost v konstantnem času, ki je O(1) za osnovne operacije, kot sta get() in put(). TreeMap je počasi v primerjavi s HashMap, ker zagotavlja zmogljivost O(log(n)) za večino operacij, kot so add(), remove() in contains().
Struktura podatkov Razred HashMap uporablja zgoščena tabela . TreeMap interno uporablja a Rdeče-črna drevo, ki je samouravnotežno binarno iskalno drevo.
Metoda primerjave Uporablja se enako () metoda Objekt razred za primerjavo ključev. Metoda equals() razreda Map jo preglasi. Uporablja primerjaj z () način za primerjavo ključev.
Funkcionalnost Razred HashMap vsebuje samo osnovne funkcije, kot je get(), put(), KeySet() , itd. Razred TreeMap je bogat s funkcionalnostjo, saj vsebuje funkcije, kot so: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Vrstni red elementov HashMap ne vzdržuje nobenega reda. Elementi so razvrščeni v naravni red (naraščajoče).
Uporabe HashMap je treba uporabiti, kadar ne potrebujemo para ključ-vrednost v razvrščenem vrstnem redu. TreeMap je treba uporabiti, ko potrebujemo par ključ-vrednost v razvrščenem (naraščajočem) vrstnem redu.

Primer HashMap proti TreeMap

V naslednjem primeru lahko opazimo, da so elementi HashMap v naključnem vrstnem redu, medtem ko so elementi TreeMap urejeni v naraščajočem vrstnem redu.

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

Izhod:

Razlika med HashMap in TreeMap