Skillnader mellan HashMap och TreeMap

HashMap har varit en del av Java: s samling. Det ger den grundläggande implementeringen av Java Map Interface. Data lagras i par (nyckel, värde). Du måste känna till dess nyckel för att få tillgång till ett värde. HashMap är känd som HashMap eftersom den använder Hashing-tekniken. TreeMap används för att implementera Map Interface och NavigableMap med Abstract Class. Kartan sorteras efter dess naturliga ordning på dess nycklar, eller av den komparator som tillhandahålls vid skapandet av kartan, beroende på vilken konstruktör den används.

Likheter mellan HashMap och TreeMap

Förutom skillnaderna finns det följande likheter mellan hashmap och treemap:

  • Både HashMap- och TreeMap-klasserna implementerar serialiserbara och klonbara gränssnitt.
  • Både HashMap och TreeMap utökar AbstractMap-klassen.
  • Både HashMap- och TreeMap-klasser fungerar på nyckelvärdespar.
  • Både HashMap och TreeMap är icke-synkroniserade samlingar.
  • Både HashMap och TreeMap misslyckas med snabba samlingar.

Båda implementeringarna är en del av insamlingsramen och lagrar data i nyckelvärdespar.

Java-program som visar HashMap och TreeMap

Här är ett java-program som visar hur element läggs och hämtas från 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:

Från utgången är det tydligt att hashmap inte upprätthåller någon ordning. Här är ett java-program som visar hur element läggs och hämtas från trekarta.

Koda:

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:

Från utgången observeras att tangenterna sorteras i en naturlig ordning. Därför upprätthåller Treemap sorterad ordning.

Head to Head-skillnader mellan HashMap och TreeMap (Infographics)

Nedan visas toppskillnader mellan HashMap och TreeMap

Nyckelskillnaden mellan HashMap vs TreeMap

Följande är punkterna för nyckelskillnad HashMap och TreeMap:

1. Struktur och implementering

Hash Map är en hash-tabellbaserad implementering. Det utökar klassen Abstract Map och implementerar kartgränssnittet. En Hash-karta fungerar på hashingprincipen. Kartimplementeringen fungerar som en skopa hashtabell men när skoporna blir för stora i storlek konverteras de till trädnoder, var och en har en liknande struktur som noderna i TreeMap. TreeMap utökar abstrakt kartklass och implementerar ett navigerbart kartgränssnitt. Den underliggande datastrukturen för treemap är ett rött-svart träd.

2. Iteration

Iterationens ordning för Hash Map är odefinierad medan delar av en TreeMap beställs i naturlig ordning eller i en anpassad ordning som anges med en komparator.

3. Prestanda

Eftersom Hashmap är en hashtable-baserad implementering ger den en konstant tidsprestanda som är lika med O (1) för de flesta av de gemensamma operationerna. Den tid som krävs för att söka efter ett element på en hashkarta är O (1). Men om det finns en felaktig implementering i hashmap kan det leda till ytterligare minnesomkostnader och prestandadegradering. Å andra sidan ger TreeMap en prestanda av O (log (n)). Eftersom hashmap är hashtable baserat kräver det ett sammanhängande intervall minne medan en treemap bara använder den mängd minne som krävs för att hålla objekt. Därför är HashMap mer tidseffektiv än treemap men treemap är mer platseffektiv än HashMap.

4. Nollhantering

HashMap tillåter nästan en nollnyckel och många nollvärden medan null i en trekarta inte kan användas som nyckel även om nollvärden är tillåtna. Om null används som nyckel i hashmap kommer det att kasta ett undantag för nollpekare eftersom det internt använder jämför eller jämför metoden för att sortera element.

Jämförelse av tabell

Här är en jämförelsetabell som visar skillnader mellan hashmap och treemap:

Grund för jämförelseHashMapTreeMap
Syntaxpublic class HashMap utökar AbstractMap implementerar Map, Cloneable, Serializablepublic class TreeMap utökar AbstractMap-redskapNavigableMap, Cloneable, Serializable
BeställningHashMap ger inte någon beställning för element.Element beställs i en naturlig eller anpassad ordning.
HastighetSnabbLångsam
Nolltangenter och värdenTillåter nästan en nyckel som null och flera nollvärden.Det tillåter inte noll som nyckel men tillåter flera nollvärden.
MinnesförbrukningHashMap förbrukar mer minne på grund av den underliggande Hash-tabellen.Förbrukar mindre minne jämfört med HashMap.
FunktionalitetTillhandahåller endast grundläggande funktionerDet ger rikare funktioner.
Jämförelsemetod användsI princip använder metoden likhet () för att jämföra nycklar.Använd metoden jämför () eller jämförTo () för att jämföra nycklar.
Gränssnitt implementeratKarta, seriebar och klonbarNavigerbar karta, seriebar och klonbar
PrestandaGer en föreställning av O (1).Ger prestanda för O (log n)
DatastrukturAnvänder hash-tabellen som en datastruktur.Använder rött-svart träd för datalagring.
Homogena och heterogena elementDet tillåter såväl homogena som heterogena element eftersom det inte utför någon sortering.Det tillåter endast homogena element när det utförs sortering.
Använd fallAnvänds när vi inte behöver nyckelvärdespar i sorterad ordning.Används när nyckelvärdespar på en karta måste sorteras.

Slutsats

Från artikeln dras slutsatsen att hashmap är en generell implementering av kartgränssnittet. Det ger prestanda för O (1) medan Treemap ger en prestanda av O (log (n)). Därför är HashMap vanligtvis snabbare än TreeMap.

Rekommenderade artiklar

Detta är en guide till HashMap vs TreeMap. Här diskuterar vi introduktionen till HashMap vs TreeMap, Skillnader mellan Hashmap och Treemap och en jämförelsetabell. Du kan också gå igenom våra andra artiklar som föreslås för att lära dig mer–

  1. WebLogic vs JBoss
  2. Lista mot uppsättning
  3. Git Fetch vs Git Pull
  4. Kafka vs Spark | Topp skillnader
  5. Topp 5 skillnader mellan Kafka och Kinesis

Kategori: