Java HashMap og Trækort begge er klasserne i Java Collections frameworket. Java Map-implementering fungerer normalt som en bucketed hash-tabel. Når spande bliver for store, bliver de omdannet til noder af TræNoder , hver struktureret på samme måde som dem i java.util.TreeMap .
multiline kommentar powershell
HashMap
HashMap implementerer Kort, kan klones og Serialiserbar interface. Det strækker sig Abstrakt kort klasse. Det hører til java.util pakke.
- HashMap indeholder værdi baseret på nøglen.
- Det kan have en enkelt null-nøgle og flere null-værdier.
- HashMap opretholder ikke orden under iteration.
- Den indeholder unikke elementer.
- Det fungerer efter princippet om hashing.
Trækort
TreeMap-klassen udvides Abstrakt kort klasse og redskaber Navigable Map , Kan klones , og Serialiserbar interface. TreeMap er et eksempel på en Sorteret kort . Det er implementeret af det rød-sort træ, hvilket betyder, at rækkefølgen af nøglerne er sorteret.
- TreeMap indeholder også værdi baseret på nøglen.
- TreeMap er sorteret efter nøgler.
- Den indeholder unikke elementer.
- Det kan ikke have en null-nøgle, men have flere null-værdier.
- Tasterne er i stigende rækkefølge.
- Det gemmer objektet i træstrukturen.
Ligheder mellem HashMap og TreeMap
- Begge klasser udvider Abstrakt kort klasse.
- Et kort er et objekt, der gemmer nøgleværdi par. I nøgle-værdi-parret er hver nøgle unik, men deres værdier kan være duplikere .
- Begge klasser repræsenterer kortlægningen fra nøgle til værdier .
- Begge kort er ikke synkroniseret .
- Kortbrug sætte() metode til at tilføje et element i kortet.
- Iteratoren kaster en ConcurrentModificationException hvis kortet bliver ændret på nogen måde.
Den vigtigste forskel mellem HashMap og TreeMap er:
HashMap bevarer ikke iterationsrækkefølgen, mens Trækort bevar ordren ved at bruge sammenligne med() metode eller en komparator indstillet i TreeMap's konstruktør.
snor til itn
Følgende tabel beskriver forskellene mellem HashMap og TreeMap.
Basis | HashMap | Trækort |
---|---|---|
Definition | Java HashMap er en hashtable-baseret implementering af Map-grænseflade. | Java Trækort er en træstrukturbaseret implementering af kortgrænseflade. |
Interface implementerer | HashMap implementerer Kort, kan klones , og Serialiserbar interface. | TreeMap implementerer Navigable Map, Klonbar , og Serialiserbar interface. |
Nul nøgler/værdier | HashMap tillader en enkelt nul nøgle og mange null-værdier. | TreeMap tillader ikke nul nøgler, men kan have mange null-værdier. |
Homogen/ Heterogen | HashMap tillader heterogene elementer, fordi det ikke udfører sortering på nøgler. | TreeMap tillader homogene værdier som en nøgle på grund af sortering. |
Ydeevne | HashMap er hurtigere end TreeMap, fordi det giver konstant-tidsydelse, der er O(1) for de grundlæggende operationer som get() og put(). | TreeMap er langsom sammenlignet med HashMap, fordi det giver ydeevnen af O(log(n)) for de fleste operationer som add(), remove() og contains(). |
Datastruktur | HashMap-klassen bruger hash tabel . | TreeMap bruger internt en Rød-sort træ, som er et selvbalancerende binært søgetræ. |
Sammenligningsmetode | Det bruger lige med() metoden til Objekt klasse for at sammenligne nøgler. Equals()-metoden i Map-klassen tilsidesætter den. | Den bruger sammenligne med() metode til at sammenligne nøgler. |
Funktionalitet | HashMap-klassen indeholder kun grundlæggende funktioner som get(), put(), KeySet() , etc. . | TreeMap-klassen er rig på funktionalitet, fordi den indeholder funktioner som: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() . |
Rækkefølgen af elementer | HashMap opretholder ingen orden. | Elementerne er sorteret ind naturlig orden (stigende). |
Bruger | HashMap skal bruges, når vi ikke kræver nøgle-værdi-par i sorteret rækkefølge. | TreeMap skal bruges, når vi kræver nøgle-værdi-par i sorteret (stigende) rækkefølge. |
Eksempel på HashMap vs TreeMap
I det følgende eksempel kan vi observere, at elementerne i HashMap er i tilfældig rækkefølge, mens elementerne i TreeMap er arrangeret i stigende rækkefølge.
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: