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