Rozdíly mezi HashMap a TreeMap

HashMap je součástí kolekce Java. Poskytuje základní implementaci rozhraní Java Map Interface. Data jsou uložena ve dvojicích (klíč, hodnota). Pro přístup k hodnotě musíte znát jeho klíč. HashMap je známý jako HashMap, protože používá techniku ​​Hashing. TreeMap se používá k implementaci rozhraní Map a NavigableMap s abstraktní třídou. Mapa je tříděna podle přirozeného pořadí svých klíčů nebo podle komparátoru poskytnutého v době vytvoření mapy, podle toho, který konstruktor je použit.

Podobnosti mezi HashMap a TreeMap

Kromě rozdílů existují mezi hashmapem a treemapem následující podobnosti:

  • Třídy HashMap a TreeMap implementují rozhraní Serializable a Cloneable.
  • HashMap i TreeMap rozšiřují třídu AbstractMap.
  • Třídy HashMap i TreeMap pracují na párech klíč-hodnota.
  • HashMap i TreeMap jsou nesynchronizované kolekce.
  • HashMap i TreeMap selhávají rychlé sbírky.

Obě implementace jsou součástí rámce kolekce a ukládají data do párů klíč-hodnota.

Program Java zobrazující HashMap a TreeMap

Zde je program java, který ukazuje, jak jsou prvky vkládány a získávány 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ýstup:

Z výstupu je zřejmé, že hashmap neudržuje žádné pořadí. Zde je program java, který ukazuje, jak jsou prvky vkládány a získávány z treemapu.

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ýstup:

Z výstupu je patrné, že klíče jsou seřazeny v přirozeném pořadí. Proto Treemap udržuje tříděné pořadí.

Rozdíly mezi hlavami mezi HashMapem a TreeMapem (infografika)

Níže jsou uvedeny hlavní rozdíly mezi HashMap a TreeMap

Klíčový rozdíl HashMap vs. TreeMap

Níže jsou uvedeny body Key rozdílu HashMap a TreeMap:

1. Struktura a implementace

Hash Map je implementace založená na hašovacích tabulkách. Rozšiřuje třídu Abstraktní mapa a implementuje rozhraní Map. Hashova mapa funguje na principu hašování. Implementace mapy funguje jako bucketed hash table, ale když se velikosti lopatek příliš zvětší, převedou se na uzly Tree, z nichž každý má podobnou strukturu jako uzly TreeMap. TreeMap rozšiřuje třídu abstraktní mapy a implementuje rozhraní navigovatelné mapy. Základní datovou strukturou pro Treemap je červeno-černý strom.

2. Iterační řád

Iterační pořadí Hashovy mapy není definováno, zatímco prvky TreeMap jsou uspořádány v přirozeném nebo ve vlastním pořadí zadaném pomocí komparátoru.

3. Výkon

Protože Hashmap je implementace založená na hashtable, poskytuje výkon v konstantním čase, který je pro většinu běžných operací stejný jako O (1). Čas potřebný k prohledání prvku v hašovací mapě je O (1). Pokud však dojde k nesprávné implementaci v hashmapu, může to vést k další režii paměti a snížení výkonu. Na druhou stranu poskytuje TreeMap výkon O (log (n)). Protože hashmap je založen na hashtable, vyžaduje souvislý rozsah paměti, zatímco treemap používá pouze množství paměti potřebné k uložení položek. Proto je HashMap časově efektivnější než treemap, ale treemap je více prostorově efektivní než HashMap.

4. Null Handling

HashMap umožňuje téměř jeden nulový klíč a mnoho nulových hodnot, zatímco v trezoru nelze null použít jako klíč, i když jsou povoleny nulové hodnoty. Pokud je null použit jako klíč v hashmapu, vyvolá výjimku nulového ukazatele, protože interně používá pro třídění prvků metodu porovnávání nebo porovnání.

Porovnání tabulky

Zde je srovnávací tabulka ukazující rozdíly mezi hashmapem a tremapou:

Základ srovnáníHashMapTreeMap
Syntaxveřejná třída HashMap rozšiřuje AbstractMap implementuje Map, Cloneable, Serializablepublic class TreeMap rozšiřuje AbstractMap implementujeNavigableMap, Cloneable, Serializable
ObjednáníHashMap neposkytuje žádnou objednávku prvků.Prvky jsou seřazeny v přirozeném nebo přizpůsobeném pořadí.
RychlostRychleZpomalit
Nulové klíče a hodnotyUmožňuje téměř jeden klíč jako nulové a více nulových hodnot.Neumožňuje null jako klíč, ale umožňuje více nulových hodnot.
Spotřeba pamětiHashMap spotřebovává více paměti díky podkladové tabulce Hash.Ve srovnání s HashMapem spotřebovává méně paměti.
FunkčnostPoskytuje pouze základní funkcePoskytuje bohatší funkce.
Použitá srovnávací metodaPro porovnání klíčů se v zásadě používá metoda equals ().K porovnání klíčů používá metodu porovnání () nebo porovnáníTo ().
Rozhraní implementovánoMapa, Serializovatelné a KlonovatelnéNavigovatelná mapa, Serializable a Cloneable
VýkonDává výkon O (1).Poskytuje výkon O (log n)
Datová strukturaPoužije hashovou tabulku jako datovou strukturu.Využívá červeno-černý strom k ukládání dat.
Homogenní a heterogenní prvkyUmožňuje homogenní i heterogenní prvky, protože neprovádí žádné třídění.Při třídění umožňuje pouze homogenní prvky.
Případy užitíPoužívá se, když nevyžadujeme páry klíč-hodnota v seřazeném pořadí.Používá se, když je třeba seřadit dvojice klíč-hodnota mapy.

Závěr

Z článku je učiněn závěr, že hashmap je obecná implementace rozhraní Map. Poskytuje výkon O (1), zatímco Treemap poskytuje výkon O (log (n)). Proto je HashMap obvykle rychlejší než TreeMap.

Doporučené články

Toto je průvodce HashMap vs TreeMap. Zde diskutujeme úvod do HashMap vs. TreeMap, rozdíly mezi Hashmapem a Treemapem a srovnávací tabulku. Další informace naleznete také v dalších navrhovaných článcích -

  1. WebLogic vs JBoss
  2. Seznam vs Set
  3. Git Fetch vs Git Pull
  4. Kafka vs Spark | Nejlepší rozdíly
  5. Top 5 Rozdíly Kafka vs Kinesis

Kategorie: