logo

Rozdiel medzi HashMap a TreeMap

Java HashMap a Stromová mapa obe sú triedami rámca Java Collections. Implementácia Java Map zvyčajne funguje ako bucketovaná hašovacia tabuľka. Keď sú vedrá príliš veľké, premenia sa na uzly TreeNodes , každý je štruktúrovaný podobne ako v java.util.TreeMap .

HashMap

implementuje HashMap Mapa, klonovateľná a Serializovateľné rozhranie. Rozširuje sa Abstraktná mapa trieda. Patrí k java.util balík.

  • HashMap obsahuje hodnotu založenú na kľúči.
  • Môže mať jeden kľúč null a viacero hodnôt null.
  • HashMap neudržiava poriadok počas iterácie.
  • Obsahuje jedinečné prvky.
  • Funguje na princípe hashovania.

Stromová mapa

Trieda TreeMap sa rozširuje Abstraktná mapa triedy a náradia Navigovateľná mapa , Klonovateľné a Serializovateľné rozhranie. TreeMap je príkladom a SortedMap . Je implementovaný stromom Red-Black, čo znamená, že poradie kľúčov je zoradené.

  • TreeMap tiež obsahuje hodnotu založenú na kľúči.
  • TreeMap je zoradený podľa kľúčov.
  • Obsahuje jedinečné prvky.
  • Nemôže mať nulový kľúč, ale môže mať viacero nulových hodnôt.
  • Kľúče sú vo vzostupnom poradí.
  • Ukladá objekt do stromovej štruktúry.

Podobnosti medzi HashMap a TreeMap

    HashMapa Stromová mapa triedy realizovať Klonovateľné a Serializovateľné rozhranie.
  • Obe triedy sa rozširujú Abstraktná mapa trieda.
  • Mapa je objekt, ktorý ukladá kľúč-hodnota párov. V páre kľúč – hodnota je každý kľúč jedinečný, ale ich hodnoty môžu byť duplikát .
  • Obe triedy predstavujú mapovanie z kľúč do hodnoty .
  • Obe mapy nie sú synchronizované .
  • Použitie mapy dať () metóda na pridanie prvku do mapy.
  • Iterátor vyhodí a ConcurrentModificationException ak sa mapa akýmkoľvek spôsobom upraví.

Kľúčový rozdiel medzi HashMap a TreeMap je:

HashMap nezachováva poradie iterácií, zatiaľ čo Stromová mapa zachovať objednávku pomocou porovnať s() metóda alebo a komparátor nastaviť v konštruktore TreeMap.

Nasledujúca tabuľka popisuje rozdiely medzi HashMap a TreeMap.

Základ HashMap Stromová mapa
Definícia Java HashMap je implementácia rozhrania mapy založená na hashtable. Java Stromová mapa je implementácia rozhrania mapy založená na stromovej štruktúre.
Implementy rozhrania implementuje HashMap Mapa, klonovateľná a Serializovateľné rozhranie. Implementy TreeMap Navigovateľná mapa, klonovateľná a Serializovateľné rozhranie.
Nulové kľúče/hodnoty HashMap umožňuje a slobodný nulový kľúč a viacnásobné nulové hodnoty. TreeMap to neumožňuje nulový kľúče, ale môže mať viacnásobné nulové hodnoty.
Homogénne/ heterogénne HashMap umožňuje heterogénne prvky, pretože nevykonáva triedenie kľúčov. TreeMap umožňuje homogénne hodnoty ako kľúč z dôvodu triedenia.
Výkon HashMap je rýchlejšie ako TreeMap, pretože poskytuje výkon v konštantnom čase, ktorý je O(1) pre základné operácie ako get() a put(). TreeMap je pomaly v porovnaní s HashMap, pretože poskytuje výkon O(log(n)) pre väčšinu operácií ako add(), remove() a include().
Dátová štruktúra Trieda HashMap používa hash tabuľka . TreeMap interne používa a Červená čierna strom, čo je samovyvažujúci binárny vyhľadávací strom.
Porovnávacia metóda Používa sa rovná sa() metóda Objekt triedy na porovnanie kľúčov. Metóda equals() triedy Map ju prepíše. Používa sa porovnať s() metóda porovnávania kľúčov.
Funkčnosť Trieda HashMap obsahuje iba základné funkcie ako get(), put(), KeySet() , atď. . Trieda TreeMap je bohatá na funkcie, pretože obsahuje funkcie ako: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Poradie prvkov HashMap neudržiava žiadny poriadok. Prvky sú zoradené v prirodzený poriadok (vzostupne).
Využitie HashMap by sa mal použiť, keď nevyžadujeme pár kľúč – hodnota v zoradenom poradí. Stromová mapa by sa mala použiť, keď požadujeme pár kľúč – hodnota v zoradenom (vzostupnom) poradí.

Príklad HashMap vs TreeMap

V nasledujúcom príklade môžeme pozorovať, že prvky HashMap sú v náhodnom poradí, zatiaľ čo prvky TreeMap sú usporiadané vo vzostupnom poradí.

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

Rozdiel medzi HashMap a TreeMap