Java HashMap og Trekart begge er klassene i Java Collections-rammeverket. Java Map-implementering fungerer vanligvis som en bucketed hash-tabell. Når bøtter blir for store, blir de forvandlet til noder av Trenoder , hver strukturert på samme måte som de i java.util.TreeMap .
justere bilder i css
HashMap
HashMap implementerer Kart, kloningsbart og Serialiserbar grensesnitt. Den strekker seg Abstrakt kart klasse. Det tilhører java.util pakke.
- HashMap inneholder verdi basert på nøkkelen.
- Den kan ha en enkelt nullnøkkel og flere nullverdier.
- HashMap opprettholder ikke orden under iterasjon.
- Den inneholder unike elementer.
- Det fungerer etter prinsippet om hashing.
Trekart
TreeMap-klassen utvides Abstrakt kart klasse og redskaper Navigerbart kart , Klonbar , og Serialiserbar grensesnitt. TreeMap er et eksempel på en Sortert kart . Det implementeres av rød-svart-treet, som betyr at rekkefølgen på nøklene er sortert.
- TreeMap inneholder også verdi basert på nøkkelen.
- TreeMap er sortert etter nøkler.
- Den inneholder unike elementer.
- Den kan ikke ha en nullnøkkel, men den har flere nullverdier.
- Nøklene er i stigende rekkefølge.
- Den lagrer objektet i trestrukturen.
Likheter mellom HashMap og TreeMap
- Begge klassene utvider seg Abstrakt kart klasse.
- Et kart er et objekt som lagrer nøkkelverdi par. I nøkkelverdi-paret er hver nøkkel unik, men verdiene kan være det duplisere .
- Begge klassene representerer kartleggingen fra nøkkel til verdier .
- Begge kartene er det ikke synkronisert .
- Kartbruk sette() metode for å legge til et element i kartet.
- Iteratoren kaster en ConcurrentModificationException hvis kartet blir endret på noen måte.
Hovedforskjellen mellom HashMap og TreeMap er:
HashMap bevarer ikke iterasjonsrekkefølgen mens Trekart bevar bestillingen ved å bruke sammenligne med() metode eller en komparator satt i TreeMaps konstruktør.
streng til itn
Tabellen nedenfor beskriver forskjellene mellom HashMap og TreeMap.
Basis | HashMap | Trekart |
---|---|---|
Definisjon | Java HashMap er en hashtabellbasert implementering av kartgrensesnitt. | Java Trekart er en trestrukturbasert implementering av kartgrensesnitt. |
Grensesnitt-implementer | HashMap implementerer Kart, kloningsbart , og Serialiserbar grensesnitt. | TreeMap implementerer Navigable Map, Klonbar , og Serialiserbar grensesnitt. |
Nullnøkler/verdier | HashMap tillater en enkelt nullnøkkel og flere nullverdier. | TreeMap tillater ikke null nøkler men kan ha flere nullverdier. |
Homogen/ Heterogen | HashMap tillater heterogene elementer fordi den ikke utfører sortering på nøkler. | TreeMap tillater homogene verdier som en nøkkel på grunn av sortering. |
Opptreden | HashMap er raskere enn TreeMap fordi det gir konstant-tid ytelse som er O(1) for grunnleggende operasjoner som get() og put(). | TreeMap er langsom sammenlignet med HashMap fordi det gir ytelsen til O(log(n)) for de fleste operasjoner som add(), remove() og contains(). |
Data struktur | HashMap-klassen bruker hasjtabell . | TreeMap bruker internt en Rød svart tre, som er et selvbalanserende binært søketre. |
Sammenligningsmetode | Det bruker er lik() metoden for Gjenstand klasse for å sammenligne nøkler. equals()-metoden til Map-klassen overstyrer den. | Den bruker sammenligne med() metode for å sammenligne nøkler. |
Funksjonalitet | HashMap-klassen inneholder bare grunnleggende funksjoner som get(), put(), KeySet() , etc. . | TreeMap-klassen er rik på funksjonalitet, fordi den inneholder funksjoner som: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() . |
Rekkefølge av elementer | HashMap opprettholder ingen orden. | Elementene er sortert inn naturlig orden (stigende). |
Bruker | HashMap bør brukes når vi ikke krever nøkkel-verdi-par i sortert rekkefølge. | TreeMap bør brukes når vi krever nøkkel-verdi-par i sortert (stigende) rekkefølge. |
Eksempel på HashMap vs TreeMap
I følgende eksempel kan vi observere at elementene i HashMap er i tilfeldig rekkefølge, mens elementene i TreeMap er ordnet i stigende rekkefø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()); } } }
Produksjon: