Rozdiely medzi HashMap a TreeMap

HashMap je súčasťou zbierky Java. Poskytuje základnú implementáciu rozhrania Java Map Interface. Dáta sú uložené v pároch (Key, Value). Ak chcete získať prístup k hodnote, musíte poznať jej kľúč. HashMap je známy ako HashMap, pretože používa techniku ​​Hashing. TreeMap sa používa na implementáciu mapového rozhrania a navigovateľnej mapy s triedou abstraktov. Mapa je usporiadaná podľa prirodzeného poradia svojich kľúčov alebo podľa komparátora poskytnutého v čase vytvorenia mapy, v závislosti od toho, ktorý konštruktor sa použije.

Podobnosti medzi HashMap a TreeMap

Okrem rozdielov existujú medzi hashmapom a tremapou tieto podobnosti:

  • Triedy HashMap aj TreeMap implementujú rozhrania Serializable a Cloneable.
  • HashMap aj TreeMap rozširujú triedu AbstractMap.
  • Triedy HashMap aj TreeMap pracujú na pároch kľúč - hodnota.
  • HashMap aj TreeMap sú nesynchronizované zbierky.
  • HashMap aj TreeMap zlyhávajú rýchle zbierky.

Obe implementácie sú súčasťou rámca zhromažďovania a ukladajú údaje do párov kľúč - hodnota.

Program Java zobrazujúci HashMap a TreeMap

Tu je program java, ktorý ukazuje, ako sa prvky vkladajú a získavajú z hashmapy:

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

Výkon:

Z výstupu je zrejmé, že hashmap neudržiava žiadny poriadok. Tu je program java, ktorý ukazuje, ako sú prvky vkladané a získavané z treemap.

kód:

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

Výkon:

Z výstupu je zrejmé, že kľúče sú usporiadané v prirodzenom poradí. Preto Treemap udržuje zoradené poradie.

Rozdiely Head to Head medzi HashMap a TreeMap (Infographics)

Nižšie sú uvedené najväčšie rozdiely medzi HashMap a TreeMap

Kľúčový rozdiel HashMap verzus TreeMap

Nasledujú body Kľúčový rozdiel HashMap a TreeMap:

1. Štruktúra a implementácia

Hash Map je implementácia založená na hašovacích tabuľkách. Rozširuje triedu abstraktných máp a implementuje rozhranie mapy. Mapa hash funguje na princípe hashovania. Implementácia mapy sa chová ako bucketed hash table, ale keď budú vedrá príliš veľké, prevedú sa na uzly Tree, z ktorých každý bude mať podobnú štruktúru ako uzly TreeMap. TreeMap rozširuje triedu abstraktných máp a implementuje rozhranie navigačnej mapy. Základnou dátovou štruktúrou pre Treemap je červeno-čierny strom.

2. Iteračný poriadok

Iteračné poradie Hashovej mapy nie je definované, zatiaľ čo prvky TreeMap sú usporiadané v prirodzenom poradí alebo vo vlastnom poradí špecifikovanom pomocou porovnávača.

3. Výkon

Pretože Hashmap je implementácia založená na hashovaní, poskytuje výkon v konštantnom čase rovný O (1) pre väčšinu bežných operácií. Čas potrebný na vyhľadávanie prvku v hashovej mape je O (1). Ak však v hashmap existuje nesprávna implementácia, môže to viesť k ďalšiemu zníženiu režijnej kapacity a výkonu. Na druhej strane, TreeMap poskytuje výkon O (log (n)). Pretože hashmap je založený na hashtable, vyžaduje súvislý rozsah pamäte, zatiaľ čo treemap používa iba také množstvo pamäte, aké je potrebné na uchovávanie položiek. Preto je HashMap časovo efektívnejší ako treemap, ale treemap je priestorovo efektívnejší ako HashMap.

4. Manipulácia s nulovými hodnotami

HashMap umožňuje takmer jeden nulový kľúč a veľa nulových hodnôt, zatiaľ čo v trezore nemôže byť null použitý ako kľúč, aj keď sú povolené nulové hodnoty. Ak je hodnota null použitá ako kľúč v hašmape, vyvolá výnimku nulového ukazovateľa, pretože interne používa na triedenie prvkov metódu porovnania alebo porovnania.

Porovnanie tabuľky

Tu je porovnávacia tabuľka ukazujúca rozdiely medzi hashmapom a tremapou:

Základ porovnaniaHashMapTreeMap
syntaxverejná trieda HashMap rozširuje AbstractMap implementuje Mapy, Cloneable, Serializablepublic class TreeMap rozširuje AbstractMap implementujeNavigableMap, Cloneable, Serializable
RadenieHashMap neposkytuje žiadnu objednávku prvkov.Prvky sú usporiadané v prirodzenom alebo prispôsobenom poradí.
rýchlosťrýchlypomaly
Null Kľúče a hodnotyUmožňuje takmer jeden kľúč ako nulové a viacnásobné nulové hodnoty.Nepovoľuje null ako kľúč, ale umožňuje viac null hodnôt.
Spotreba pamäteHashMap spotrebuje viac pamäte z dôvodu základnej tabuľky hash.V porovnaní s HashMapom spotrebuje menej pamäte.
funkčnosťPoskytuje iba základné funkciePoskytuje bohatšie funkcie.
Použitá porovnávacia metódaNa porovnanie kľúčov sa v zásade používa metóda equals ().Na porovnanie kľúčov sa používa metóda porovnania () alebo porovnania ().
Rozhranie implementovanéMapa, Serializovateľné a KlonovateľnéNavigovateľná mapa, Serializable a Cloneable
výkonPoskytuje výkon O (1).Poskytuje výkon O (log n)
Dátová štruktúraPoužije hashovú tabuľku ako dátovú štruktúru.Využíva červeno-čierny strom na ukladanie údajov.
Homogénne a heterogénne prvkyUmožňuje homogénne aj heterogénne prvky, pretože nevykonáva žiadne triedenie.Pri triedení umožňuje iba homogénne prvky.
Prípady použitiaPoužíva sa, keď nevyžadujeme páry kľúč - hodnota v usporiadanom poradí.Používa sa, keď sa vyžaduje triedenie párov kľúč - hodnota mapy.

záver

Z tohto článku sa dospelo k záveru, že hashmap je implementácia rozhrania Map na všeobecné účely. Poskytuje výkon O (1), zatiaľ čo Treemap poskytuje výkon O (log (n)). Preto je HashMap zvyčajne rýchlejší ako TreeMap.

Odporúčané články

Toto je sprievodca HashMap verzus TreeMap. Tu diskutujeme úvod do HashMap verzus TreeMap, rozdiely medzi Hashmap a Treemap a porovnávaciu tabuľku. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. WebLogic verzus JBoss
  2. Zoznam vs
  3. Git Fetch vs Git Pull
  4. Kafka vs Spark | Hlavné rozdiely
  5. Top 5 rozdielov Kafka vs Kinesis

Kategórie: