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 porovnania | HashMap | TreeMap |
syntax | verejná trieda HashMap rozširuje AbstractMap implementuje Mapy, Cloneable, Serializable | public class TreeMap rozširuje AbstractMap implementujeNavigableMap, Cloneable, Serializable |
Radenie | HashMap neposkytuje žiadnu objednávku prvkov. | Prvky sú usporiadané v prirodzenom alebo prispôsobenom poradí. |
rýchlosť | rýchly | pomaly |
Null Kľúče a hodnoty | Umožň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äte | HashMap 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é funkcie | Poskytuje bohatšie funkcie. |
Použitá porovnávacia metóda | Na 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ýkon | Poskytuje výkon O (1). | Poskytuje výkon O (log n) |
Dátová štruktúra | Použije hashovú tabuľku ako dátovú štruktúru. | Využíva červeno-čierny strom na ukladanie údajov. |
Homogénne a heterogénne prvky | Umožňuje homogénne aj heterogénne prvky, pretože nevykonáva žiadne triedenie. | Pri triedení umožňuje iba homogénne prvky. |
Prípady použitia | Použí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 -
- WebLogic verzus JBoss
- Zoznam vs
- Git Fetch vs Git Pull
- Kafka vs Spark | Hlavné rozdiely
- Top 5 rozdielov Kafka vs Kinesis