Forskelle mellem HashMap og TreeMap

HashMap har været en del af Java's samling. Det giver den grundlæggende implementering af Java Map Interface. Dataene gemmes i par (nøgle, værdi). Du skal kende dens nøgle for at få adgang til en værdi. HashMap er kendt som HashMap, fordi den bruger Hashing-teknikken. TreeMap bruges til at implementere kortgrænsefladen og NavigableMap med abstrakt klassen. Kortet sorteres efter den naturlige rækkefølge af dens nøgler eller af den komparator, der blev leveret på tidspunktet for oprettelsen af ​​kortet, afhængigt af hvilken konstruktør det bruges.

Ligheder mellem HashMap og TreeMap

Bortset fra forskellene er der følgende ligheder mellem hashmap og treemap:

  • Både HashMap og TreeMap klasser implementerer Serialiserbare og Cloneable interface.
  • Både HashMap og TreeMap udvider AbstractMap-klassen.
  • Både HashMap og TreeMap klasser fungerer på nøgleværdipar.
  • Både HashMap og TreeMap er ikke-synkroniserede samlinger.
  • Både HashMap og TreeMap fejler hurtige samlinger.

Begge implementeringer er en del af indsamlingsrammen og gemmer data i nøgleværdipar.

Java-program viser HashMap og TreeMap

Her er et java-program, der viser, hvordan elementer sættes og hentes fra hashmap:

package com.edubca.map;
import java.util.*;
class HashMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
HashMap hashmap =
new HashMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = hashmap.get(arr(i));
// If first occurrence of the element
if (hashmap.get(arr(i)) == null)
hashmap.put(arr(i), 1);
// If elements already present in hash map
else
hashmap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m:hashmap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test the above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Produktion:

Fra output er det tydeligt, at hashmap ikke opretholder nogen orden. Her er et java-program, der demonstrerer, hvordan elementer sættes og hentes fra treemap.

Kode:

package com.edubca.map;
import java.util.*;
class TreeMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
TreeMap treemap =
new TreeMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = treemap.get(arr(i));
// If first occurrence of element
if (treemap.get(arr(i)) == null)
treemap.put(arr(i), 1);
// If elements already present in hash map
else
treemap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m: treemap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Produktion:

Fra output observeres det, at nøglerne sorteres i en naturlig rækkefølge. Derfor opretholder Treemap sorteret rækkefølge.

Head to Head forskelle mellem HashMap og TreeMap (Infographics)

Nedenfor er de største forskelle mellem HashMap og TreeMap

Nøgleforskel ved HashMap vs TreeMap

Følgende er punkterne med nøgleforskel HashMap og TreeMap:

1. Struktur og implementering

Hash Map er en hash-tabelbaseret implementering. Det udvider klassen Abstract Map og implementerer Map interface. Et Hash Map fungerer på hashprincippet. Kortimplementeringen fungerer som en spændt hash-tabel, men når spande bliver for store i størrelse, konverteres de til træknudepunkter, der hver har en lignende struktur som knudepunkterne i TreeMap. TreeMap udvider abstrakt kortklasse og implementerer en navigerbar kortgrænseflade. Den underliggende datastruktur for treemap er et rød-sort træ.

2. Iteration Order

Iteration-rækkefølgen af ​​Hash Map er udefineret, hvorimod elementer i en TreeMap bestilles i naturlig rækkefølge eller i en brugerdefineret rækkefølge specificeret ved hjælp af en komparator.

3. Ydeevne

Da Hashmap er en hashtable-baseret implementering, giver den ydeevne med konstant tid, der er lig O (1) for de fleste af de fælles operationer. Den tid, der kræves for at søge i et element på et hashkort, er O (1). Men hvis der er en forkert implementering i hashmap, kan dette føre til yderligere hukommelsesomkostninger og ydelsesnedbrydning. På den anden side giver TreeMap en ydelse af O (log (n)). Da hashmap er hashtable-baseret, kræver det en sammenhængende række af hukommelse, mens et treemap kun bruger den mængde hukommelse, der kræves til at opbevare genstande. Derfor er HashMap mere tidseffektiv end treemap, men treemap er mere pladseffektiv end HashMap.

4. Nulhåndtering

HashMap tillader næsten en nulnøgle og mange nulværdier, mens nulværdier i et treemap ikke kan bruges som nøgle, selvom nulværdier er tilladt. Hvis null er brugt som en nøgle i hashmap, kaster den en undtagelse fra nulpinderen, fordi den internt bruger sammenlignings- eller sammenligningsmetoden til sortering af elementer.

Sammenligning af tabel

Her er en sammenligningstabel, der viser forskelle mellem hashmap og treemap:

Grundlag for sammenligningHashMapTreeMap
Syntaksoffentlig klasse HashMap udvider AbstractMap implementerer Kort, Cloneable, Serializablepublic class TreeMap udvider AbstractMap-implementeringerNavigable Map, Cloneable, Serializable
BestillingHashMap giver ingen ordre for elementer.Elementer bestilles i en naturlig eller tilpasset rækkefølge.
HastighedHurtigLangsom
Nul taster og værdierTillader næsten en nøgle som null og flere nulværdier.Det tillader ikke null som nøgle, men tillader flere nulværdier.
HukommelsesforbrugHashMap bruger mere hukommelse på grund af den underliggende Hash-tabel.Forbruger mindre hukommelse i sammenligning med HashMap.
FunktionalitetIndeholder kun grundlæggende funktionerDet giver rigere funktioner.
Sammenligningsmetode brugtGrundlæggende bruger metoden lig () til at sammenligne nøgler.Bruger sammenligne () eller sammenligne To () metode til at sammenligne nøgler.
Grænseflade implementeretKort, serialiserbar og klonbarNavigerbart kort, kan serieplaceres og klones
YdeevneGiver en forestilling af O (1).Tilbyder ydeevne for O (log n)
DatastrukturBruger hash-tabellen som en datastruktur.Bruger rød-sort træ til datalagring.
Homogene og heterogene elementerDet tillader homogene såvel som heterogene elementer, fordi det ikke udfører nogen sortering.Det tillader kun homogene elementer, når det udfører sortering.
Brug sagerBruges, når vi ikke kræver nøgleværdipar i sorteret rækkefølge.Bruges, når nøgleværdipar på et kort skal sorteres.

Konklusion

Fra artiklen konkluderes det, at hashmap er en generel implementering af kortgrænsefladen. Det giver ydeevne for O (1), mens Treemap giver en ydelse af O (log (n)). Derfor er HashMap normalt hurtigere end TreeMap.

Anbefalede artikler

Dette er en guide til HashMap vs TreeMap. Her diskuterer vi introduktionen til HashMap vs TreeMap, forskelle mellem Hashmap og Treemap og en sammenligningstabel. Du kan også gennemgå vores andre foreslåede artikler for at lære mere–

  1. WebLogic vs JBoss
  2. Liste vs sæt
  3. Git Fetch vs Git Pull
  4. Kafka vs gnist | Topforskelle
  5. Top 5 forskelle af Kafka vs Kinesis

Kategori: