Verschillen tussen HashMap en TreeMap

HashMap maakt deel uit van de verzameling van Java. Het biedt de basisimplementatie van de Java Map Interface. De gegevens worden opgeslagen in paren (Key, Value). U moet de sleutel kennen om toegang te krijgen tot een waarde. HashMap staat bekend als de HashMap omdat het de Hashing-techniek gebruikt. TreeMap wordt gebruikt om de kaartinterface en navigeerbare kaart met de abstracte klasse te implementeren. De kaart wordt gesorteerd op de natuurlijke volgorde van de sleutels of op basis van de vergelijker die is opgegeven bij het maken van de kaart, afhankelijk van de constructor die wordt gebruikt.

Overeenkomsten tussen HashMap en TreeMap

Afgezien van de verschillen zijn er de volgende overeenkomsten tussen hashmap en treemap:

  • Zowel de HashMap- als de TreeMap-klassen implementeren Serializable en Cloneable interfaces.
  • Zowel HashMap als TreeMap breiden de klasse AbstractMap uit.
  • De klassen HashMap en TreeMap werken op sleutel / waarde-paren.
  • Zowel HashMap als TreeMap zijn niet-gesynchroniseerde collecties.
  • Zowel HashMap als TreeMap mislukken snelle collecties.

Beide implementaties maken deel uit van het collectiekader en slaan gegevens op in sleutel / waarde-paren.

Java-programma met HashMap en TreeMap

Hier is een Java-programma dat laat zien hoe elementen worden geplaatst en opgehaald uit 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);
)
)

Output:

Uit de output blijkt duidelijk dat hashmap geen enkele volgorde handhaaft. Hier is een Java-programma dat laat zien hoe elementen worden geplaatst en opgehaald uit de treemap.

Code:

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);
)
)

Output:

Uit de uitvoer blijkt dat de sleutels in een natuurlijke volgorde zijn gesorteerd. Vandaar dat Treemap de gesorteerde volgorde handhaaft.

Head to Head verschillen tussen HashMap en TreeMap (Infographics)

Hieronder worden de belangrijkste verschillen tussen HashMap en TreeMap weergegeven

Belangrijkste verschil tussen HashMap en TreeMap

Dit zijn de punten van het belangrijkste verschil HashMap en TreeMap:

1. Structuur en implementatie

Hash Map is een op hashtabellen gebaseerde implementatie. Het breidt de klasse Abstract Map uit en implementeert de Map-interface. Een Hash Map werkt volgens het hash-principe. De implementatie van de kaart fungeert als een ingemaakte hashtabel, maar wanneer emmers te groot worden, worden ze omgezet in Tree-knooppunten, die elk een vergelijkbare structuur hebben als de knooppunten van TreeMap. TreeMap breidt de klasse Abstract Map uit en implementeert een Navigable Map-interface. De onderliggende gegevensstructuur voor treemap is een rood-zwarte boom.

2. Iteratieorder

De Iteratie-volgorde van Hash Map is ongedefinieerd, terwijl elementen van een TreeMap in natuurlijke volgorde of in een aangepaste volgorde zijn gespecificeerd met behulp van een comparator.

3. Prestaties

Omdat Hashmap een op hashtable gebaseerde implementatie is, levert het voor de meeste gangbare bewerkingen constante prestaties die gelijk zijn aan O (1). De tijd die nodig is om een ​​element in een hashkaart te zoeken is O (1). Maar als er een onjuiste implementatie in de hashmap is, kan dit leiden tot extra geheugenoverhead en verslechtering van de prestaties. Aan de andere kant biedt TreeMap een uitvoering van O (log (n)). Omdat hashmap op hashtable is gebaseerd, vereist het een aaneengesloten geheugenbereik, terwijl een boomkaart alleen de hoeveelheid geheugen gebruikt die nodig is om items te bevatten. Daarom is HashMap tijdzuiniger dan treemap, maar treemap is ruimtebesparend dan HashMap.

4. Null afhandeling

HashMap staat bijna één nulsleutel en vele nulwaarden toe, terwijl null in een treemap niet als sleutel kan worden gebruikt, hoewel nulwaarden zijn toegestaan. Als null wordt gebruikt als een sleutel in de hashmap, genereert het een nulaanwijzeruitzondering omdat het intern de methode Compare of CompareTo gebruikt voor het sorteren van elementen.

Vergelijking van tabel

Hier is een vergelijkingstabel die verschillen toont tussen hashmap en treemap:

VergelijkingsbasisHash kaartTreeMap
Syntaxisopenbare klasse HashMap breidt AbstractMap implementeert Map, Cloneable, Serializable uitopenbare klasse TreeMap breidt AbstractMap-implementatiesNavigableMap, Cloneable, Serializable uit
BestellenHashMap biedt geen volgorde voor elementen.Elementen worden geordend in een natuurlijke of aangepaste volgorde.
SnelheidSnelLangzaam
Null Keys and ValuesStaat bijna één sleutel toe als nul en meerdere nulwaarden.Het staat null als sleutel niet toe, maar staat meerdere null-waarden toe.
GeheugenverbruikHashMap verbruikt meer geheugen vanwege de onderliggende Hash-tabel.Verbruikt minder geheugen in vergelijking met HashMap.
functionaliteitBiedt alleen basisfunctiesHet biedt rijkere functies.
Gebruikte vergelijkingsmethodeGebruikt in principe de methode equals () om sleutels te vergelijken.Gebruikt vergelijk () of vergelijkTo () methode om sleutels te vergelijken.
Interface geïmplementeerdKaart, serialiseerbaar en kloneerbaarNavigeerbare kaart, serienummerbaar en kloneerbaar
PrestatieGeeft een uitvoering van O (1).Biedt prestaties van O (log n)
Data structuurGebruikt de hashtabel als gegevensstructuur.Maakt gebruik van Red-Black Tree voor gegevensopslag.
Homogene en heterogene elementenHet maakt zowel homogene als heterogene elementen mogelijk omdat het geen sortering uitvoert.Het laat alleen homogene elementen toe tijdens het sorteren.
Gebruik CasesGebruikt wanneer we sleutel / waarde-paren in gesorteerde volgorde niet nodig hebben.Wordt gebruikt wanneer sleutel / waarde-paren van een kaart moeten worden gesorteerd.

Conclusie

Uit het artikel wordt geconcludeerd dat hashmap een algemene implementatie van de kaartinterface is. Het biedt de prestaties van O (1) terwijl Treemap de prestaties van O (log (n)) biedt. Daarom is HashMap meestal sneller dan TreeMap.

Aanbevolen artikelen

Dit is een gids voor HashMap vs TreeMap. Hier bespreken we de inleiding tot HashMap versus TreeMap, verschillen tussen Hashmap en Treemap en een vergelijkingstabel. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie–

  1. WebLogic versus JBoss
  2. Lijst versus set
  3. Git Fetch vs Git Pull
  4. Kafka vs Spark | Topverschillen
  5. Top 5 verschillen van Kafka versus Kinesis