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örelse | HashMap | TreeMap |
Syntax | public class HashMap utökar AbstractMap implementerar Map, Cloneable, Serializable | public class TreeMap utökar AbstractMap-redskapNavigableMap, Cloneable, Serializable |
Beställning | HashMap ger inte någon beställning för element. | Element beställs i en naturlig eller anpassad ordning. |
Hastighet | Snabb | Långsam |
Nolltangenter och värden | Tillå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örbrukning | HashMap förbrukar mer minne på grund av den underliggande Hash-tabellen. | Förbrukar mindre minne jämfört med HashMap. |
Funktionalitet | Tillhandahåller endast grundläggande funktioner | Det ger rikare funktioner. |
Jämförelsemetod används | I 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 implementerat | Karta, seriebar och klonbar | Navigerbar karta, seriebar och klonbar |
Prestanda | Ger en föreställning av O (1). | Ger prestanda för O (log n) |
Datastruktur | Använder hash-tabellen som en datastruktur. | Använder rött-svart träd för datalagring. |
Homogena och heterogena element | Det 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 fall | Anvä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–
- WebLogic vs JBoss
- Lista mot uppsättning
- Git Fetch vs Git Pull
- Kafka vs Spark | Topp skillnader
- Topp 5 skillnader mellan Kafka och Kinesis