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í | HashMap | TreeMap |
Syntax | veřejná třída HashMap rozšiřuje AbstractMap implementuje Map, Cloneable, Serializable | public 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í. |
Rychlost | Rychle | Zpomalit |
Nulové klíče a hodnoty | Umožň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ěti | HashMap 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čnost | Poskytuje pouze základní funkce | Poskytuje bohatší funkce. |
Použitá srovnávací metoda | Pro 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áno | Mapa, Serializovatelné a Klonovatelné | Navigovatelná mapa, Serializable a Cloneable |
Výkon | Dává výkon O (1). | Poskytuje výkon O (log n) |
Datová struktura | Použije hashovou tabulku jako datovou strukturu. | Využívá červeno-černý strom k ukládání dat. |
Homogenní a heterogenní prvky | Umožň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 -
- WebLogic vs JBoss
- Seznam vs Set
- Git Fetch vs Git Pull
- Kafka vs Spark | Nejlepší rozdíly
- Top 5 Rozdíly Kafka vs Kinesis