logo

Skillnaden mellan HashMap och TreeMap

Java HashMap och Trädkarta båda är klasserna i Java Collections-ramverket. Java Map-implementering fungerar vanligtvis som en bucketed hash-tabell. När hinkar blir för stora omvandlas de till noder av Trädnoder , var och en strukturerad på samma sätt som de i java.util.TreeMap .

rdbms

HashMap

HashMap implementerar Karta, kloningsbar och Serialiserbar gränssnitt. Den sträcker sig Abstrakt karta klass. Den tillhör java.util paket.

  • HashMap innehåller värde baserat på nyckeln.
  • Den kan ha en enda nollnyckel och flera nollvärden.
  • HashMap upprätthåller inte ordning under iteration.
  • Den innehåller unika element.
  • Det fungerar enligt principen om hashing.

Trädkarta

TreeMap-klassen utökas Abstrakt karta klass och redskap Navigable Map , Klonbar , och Serialiserbar gränssnitt. TreeMap är ett exempel på en Sorterad karta . Det implementeras av det röd-svarta trädet, vilket innebär att ordningen på nycklarna sorteras.

  • TreeMap innehåller också värde baserat på nyckeln.
  • TreeMap sorteras efter nycklar.
  • Den innehåller unika element.
  • Den kan inte ha en null-nyckel utan har flera null-värden.
  • Nycklarna är i stigande ordning.
  • Den lagrar objektet i trädstrukturen.

Likheter mellan HashMap och TreeMap

    HashMapoch Trädkarta klasser implementera Klonbar och Serialiserbar gränssnitt.
  • Båda klasserna förlänger Abstrakt karta klass.
  • En karta är ett objekt som lagrar nyckelvärde par. I nyckel-värdeparet är varje nyckel unik, men deras värden kan vara det duplicera .
  • Båda klasserna representerar kartläggningen från nyckel till värden .
  • Båda kartorna är det inte synkroniserad .
  • Kartanvändning sätta() metod för att lägga till ett element i kartan.
  • Iteratorn kastar en ConcurrentModificationException om kartan ändras på något sätt.

Den viktigaste skillnaden mellan HashMap och TreeMap är:

HashMap bevarar inte iterationsordningen medan Trädkarta bevara ordningen genom att använda jämföra med() metod eller a komparator inställd i trädkartans konstruktor.

Följande tabell beskriver skillnaderna mellan HashMap och TreeMap.

Grund HashMap Trädkarta
Definition Java HashMap är en hashtabellbaserad implementering av kartgränssnittet. Java Trädkarta är en trädstrukturbaserad implementering av kartgränssnittet.
Gränssnittsverktyg HashMap implementerar Karta, kloningsbar , och Serialiserbar gränssnitt. TreeMap implementerar Navigable Map, Klonbar , och Serialiserbar gränssnitt.
Null-nycklar/värden HashMap tillåter en enda nollnyckel och flera olika nollvärden. TreeMap tillåter inte null nycklar men kan ha flera olika nollvärden.
Homogen/ Heterogen HashMap tillåter heterogena element eftersom det inte utför sortering på nycklar. TreeMap tillåter homogena värden som en nyckel på grund av sortering.
Prestanda HashMap är snabbare än TreeMap eftersom det ger konstanttidsprestanda som är O(1) för de grundläggande operationerna som get() och put(). TreeMap är långsam i jämförelse med HashMap eftersom det ger prestanda för O(log(n)) för de flesta operationer som add(), remove() och contains().
Datastruktur HashMap-klassen använder hashtabell . TreeMap använder internt en Röd svart träd, som är ett självbalanserande binärt sökträd.
Jämförelsemetod Det använder lika() metod för Objekt klass för att jämföra nycklar. Metoden equals() för klassen Map åsidosätter den. Den använder jämföra med() metod för att jämföra nycklar.
Funktionalitet HashMap-klassen innehåller bara grundläggande funktioner som get(), put(), KeySet() , etc. . TreeMap-klassen är rik på funktionalitet, eftersom den innehåller funktioner som: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Ordning av element HashMap upprätthåller ingen ordning. Elementen sorteras in naturlig ordning (stigande).
Används HashMap bör användas när vi inte kräver nyckel-värde par i sorterad ordning. TreeMap bör användas när vi kräver nyckel-värdepar i sorterad (stigande) ordning.

Exempel på HashMap vs TreeMap

I följande exempel kan vi observera att elementen i HashMap är i slumpmässig ordning medan elementen i TreeMap är ordnade i stigande ordning.

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

Produktion:

Skillnaden mellan HashMap och TreeMap