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 sammenligning | HashMap | TreeMap |
Syntaks | offentlig klasse HashMap udvider AbstractMap implementerer Kort, Cloneable, Serializable | public class TreeMap udvider AbstractMap-implementeringerNavigable Map, Cloneable, Serializable |
Bestilling | HashMap giver ingen ordre for elementer. | Elementer bestilles i en naturlig eller tilpasset rækkefølge. |
Hastighed | Hurtig | Langsom |
Nul taster og værdier | Tillader næsten en nøgle som null og flere nulværdier. | Det tillader ikke null som nøgle, men tillader flere nulværdier. |
Hukommelsesforbrug | HashMap bruger mere hukommelse på grund af den underliggende Hash-tabel. | Forbruger mindre hukommelse i sammenligning med HashMap. |
Funktionalitet | Indeholder kun grundlæggende funktioner | Det giver rigere funktioner. |
Sammenligningsmetode brugt | Grundlæggende bruger metoden lig () til at sammenligne nøgler. | Bruger sammenligne () eller sammenligne To () metode til at sammenligne nøgler. |
Grænseflade implementeret | Kort, serialiserbar og klonbar | Navigerbart kort, kan serieplaceres og klones |
Ydeevne | Giver en forestilling af O (1). | Tilbyder ydeevne for O (log n) |
Datastruktur | Bruger hash-tabellen som en datastruktur. | Bruger rød-sort træ til datalagring. |
Homogene og heterogene elementer | Det 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 sager | Bruges, 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–
- WebLogic vs JBoss
- Liste vs sæt
- Git Fetch vs Git Pull
- Kafka vs gnist | Topforskelle
- Top 5 forskelle af Kafka vs Kinesis