logo

Forskjellen mellom HashMap og TreeMap

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

    HashMapog Trekart klasser implementere Klonbar og Serialiserbar grensesnitt.
  • 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:

Forskjellen mellom HashMap og TreeMap