logo

Rozdíl mezi HashMap a TreeMap

Jáva HashMap a Stromová mapa obě jsou třídy frameworku Java Collections. Implementace Java Map obvykle funguje jako bucketovaná hashovací tabulka. Když jsou kbelíky příliš velké, přeměňují se na uzly TreeNodes , každý strukturovaný podobně jako v java.util.TreeMap .

HashMap

implementuje HashMap Mapa, klonovatelná a Serializovatelné rozhraní. Prodlužuje se Abstraktní mapa třída. Patří k java.util balík.

  • HashMap obsahuje hodnotu založenou na klíči.
  • Může mít jeden klíč null a více hodnot null.
  • HashMap neudržuje pořádek při iteraci.
  • Obsahuje unikátní prvky.
  • Funguje na principu hashování.

Stromová mapa

Třída TreeMap se rozšiřuje Abstraktní mapa třídy a nářadí Navigovatelná mapa , Klonovatelné , a Serializovatelné rozhraní. TreeMap je příkladem a Seřazená mapa . Je implementován stromem Red-Black, což znamená, že pořadí klíčů je seřazeny.

ukázkové programy java
  • TreeMap také obsahuje hodnotu založenou na klíči.
  • TreeMap je řazena podle klíčů.
  • Obsahuje unikátní prvky.
  • Nemůže mít klíč null, ale mít více hodnot null.
  • Klíče jsou ve vzestupném pořadí.
  • Ukládá objekt do stromové struktury.

Podobnosti mezi HashMap a TreeMap

    HashMapa Stromová mapa třídy realizovat Klonovatelné a Serializovatelné rozhraní.
  • Obě třídy se rozšiřují Abstraktní mapa třída.
  • Mapa je objekt, který ukládá klíč-hodnota páry. V páru klíč–hodnota je každý klíč jedinečný, ale jejich hodnoty mohou být jedinečné duplikát .
  • Obě třídy představují mapování z klíč na hodnoty .
  • Obě mapy nejsou synchronizované .
  • Použití mapy dát() způsob přidání prvku do mapy.
  • Iterátor vyvolá a ConcurrentModificationException pokud se mapa nějakým způsobem upraví.

Klíčový rozdíl mezi HashMap a TreeMap je:

HashMap nezachovává pořadí iterací, zatímco Stromová mapa zachovat objednávku pomocí porovnat s() metoda nebo a srovnávač nastavit v konstruktoru TreeMap.

Následující tabulka popisuje rozdíly mezi HashMap a TreeMap.

Základ HashMap Stromová mapa
Definice Jáva HashMap je implementace rozhraní Map založená na hashtable. Jáva Stromová mapa je implementace mapového rozhraní založená na stromové struktuře.
Implementy rozhraní implementuje HashMap Mapa, klonovatelná , a Serializovatelné rozhraní. Implementy TreeMap Navigovatelná mapa, klonovatelná , a Serializovatelné rozhraní.
Nulové klíče/hodnoty HashMap umožňuje a singl nulový klíč a násobek nulové hodnoty. TreeMap to neumožňuje nula klíče, ale může mít násobek nulové hodnoty.
Homogenní/ heterogenní HashMap umožňuje heterogenní prvky, protože neprovádí třídění klíčů. TreeMap umožňuje jako klíč homogenní hodnoty kvůli řazení.
Výkon HashMap je rychlejší než TreeMap, protože poskytuje výkon v konstantním čase, který je O(1) pro základní operace jako get() a put(). TreeMap je pomalý ve srovnání s HashMap, protože poskytuje výkon O(log(n)) pro většinu operací, jako je add(), remove() a obsahuje().
Datová struktura Třída HashMap používá hashovací tabulka . TreeMap interně používá a Červená černá strom, což je samovyvažující binární vyhledávací strom.
Srovnávací metoda Používá rovná se() metoda Objekt třídy pro porovnání klíčů. Metoda equals() třídy Map ji přepíše. Používá se porovnat s() způsob porovnání klíčů.
Funkčnost Třída HashMap obsahuje pouze základní funkce jako get(), put(), KeySet() , atd. . Třída TreeMap je bohatá na funkce, protože obsahuje funkce jako: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Pořadí prvků HashMap neudržuje žádný pořádek. Prvky jsou seřazeny v přirozený řád (vzestupně).
Použití HashMap by se měl používat, když nevyžadujeme pár klíč–hodnota v seřazeném pořadí. Stromová mapa by se měla používat, když požadujeme pár klíč–hodnota v seřazeném (vzestupném) pořadí.

Příklad HashMap vs TreeMap

V následujícím příkladu můžeme pozorovat, že prvky HashMap jsou v náhodném pořadí, zatímco prvky TreeMap jsou uspořádány vzestupně.

 import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } } 

Výstup:

Rozdíl mezi HashMap a TreeMap