Java Hash kaart En Boomkaart beide zijn de klassen van het Java Collections-framework. De Java Map-implementatie fungeert meestal als een bucket-hashtabel. Wanneer emmers te groot worden, worden ze omgezet in knooppunten van BoomNodes , elk op dezelfde manier gestructureerd als die in java.util.TreeMap .
apache
Hash kaart
HashMap implementeert Kaart, kloonbaar En Serialiseerbaar koppel. Het strekt zich uit Samenvattingkaart klas. Het is van java.util pakket.
- HashMap bevat waarde op basis van de sleutel.
- Het kan een enkele null-sleutel en meerdere null-waarden hebben.
- HashMap handhaaft de volgorde niet tijdens het itereren.
- Het bevat unieke elementen.
- Het werkt volgens het principe van hashing.
Boomkaart
TreeMap-klasse wordt uitgebreid Samenvattingkaart klasse en werktuigen Navigeerbare kaart , Kloonbaar , En Serialiseerbaar koppel. TreeMap is een voorbeeld van een Gesorteerde kaart . Het wordt geïmplementeerd door de rood-zwarte boom, wat betekent dat de volgorde van de sleutels wordt gesorteerd.
- TreeMap bevat ook waarde op basis van de sleutel.
- TreeMap is gesorteerd op sleutels.
- Het bevat unieke elementen.
- Het kan geen nulsleutel hebben, maar meerdere nulwaarden.
- Toetsen staan in oplopende volgorde.
- Het slaat het object op in de boomstructuur.
Overeenkomsten tussen HashMap en TreeMap
- Beide klassen breiden zich uit Samenvattingkaart klas.
- Een kaart is een object dat opslaat sleutel waarde paren. In het sleutel-waardepaar is elke sleutel uniek, maar hun waarden kunnen dat ook zijn duplicaat .
- Beide klassen vertegenwoordigen de mapping van sleutel naar waarden .
- Beide kaarten niet gesynchroniseerd .
- Kaartgebruik neerzetten() methode om een element aan de kaart toe te voegen.
- De iterator gooit a ConcurrentModificationException als de kaart op enigerlei wijze wordt gewijzigd.
Het belangrijkste verschil tussen HashMap en TreeMap is:
Hash kaart behoudt de iteratievolgorde niet terwijl de Boomkaart behoud de bestelling door gebruik te maken van de vergelijk met() methode of een comparator ingesteld in de TreeMap-constructor.
De volgende tabel beschrijft de verschillen tussen HashMap en TreeMap.
Basis | Hash kaart | Boomkaart |
---|---|---|
Definitie | Java Hash kaart is een op hashtabellen gebaseerde implementatie van de kaartinterface. | Java Boomkaart is een op boomstructuur gebaseerde implementatie van de kaartinterface. |
Interface-implementen | HashMap implementeert Kaart, kloonbaar , En Serialiseerbaar koppel. | TreeMap-implementen Navigeerbare kaart, kloonbaar , En Serialiseerbaar koppel. |
Nulsleutels/waarden | HashMap staat een enkel nulsleutel en meerdere nulwaarden. | TreeMap staat dit niet toe nul sleutels maar kan hebben meerdere nulwaarden. |
Homogeen/Heterogeen | HashMap staat heterogene elementen toe omdat het geen sortering op sleutels uitvoert. | TreeMap maakt homogene waarden mogelijk als sleutel vanwege sortering. |
Prestatie | HashMap is sneller dan TreeMap omdat het constante prestaties levert die O(1) zijn voor de basisbewerkingen zoals get() en put(). | Boomkaart is langzaam in vergelijking met HashMap omdat het de prestaties van O(log(n)) biedt voor de meeste bewerkingen zoals add(), remove() en contain(). |
Data structuur | De klasse HashMap gebruikt de hash-tabel . | TreeMap gebruikt intern een Rood Zwart boom, een zelfbalancerende binaire zoekboom. |
Vergelijkingsmethode | Het gebruikt is gelijk aan() werkwijze van de Voorwerp klasse om sleutels te vergelijken. De equals()-methode van de klasse Map overschrijft deze. | Het maakt gebruik van de vergelijk met() methode om sleutels te vergelijken. |
Functionaliteit | De HashMap-klasse bevat alleen basisfuncties zoals get(), put(), KeySet() , enz. . | De TreeMap-klasse is rijk aan functionaliteit, omdat deze functies bevat zoals: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() . |
Volgorde van elementen | HashMap handhaaft geen enkele volgorde. | De elementen zijn gesorteerd natuurlijke orde (oplopend). |
Toepassingen | De HashMap moet worden gebruikt als we geen sleutel-waardepaar in gesorteerde volgorde nodig hebben. | De TreeMap moet worden gebruikt als we een sleutel-waardepaar in gesorteerde (oplopende) volgorde nodig hebben. |
Voorbeeld van HashMap versus TreeMap
In het volgende voorbeeld kunnen we zien dat de elementen van de HashMap in willekeurige volgorde staan, terwijl de elementen van de TreeMap in oplopende volgorde zijn gerangschikt.
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()); } } }
Uitgang: