logo

Atšķirība starp HashMap un TreeMap

Java HashMap un TreeMap abas ir Java Collections ietvara klases. Java Map ieviešana parasti darbojas kā segmentu jaucēj tabula. Kad spaiņi kļūst pārāk lieli, tie tiek pārveidoti par mezgliem TreeNodes , katrs strukturēts līdzīgi kā šeit esošajiem java.util.TreeMap .

HashMap

HashMap iekārtas Karte, klonējama un Serializējams saskarne. Tas pagarina AbstractMap klasē. Tas pieder java.util iepakojums.

  • HashMap satur vērtību, kuras pamatā ir atslēga.
  • Tam var būt viena nulles atslēga un vairākas nulles vērtības.
  • HashMap atkārtošanas laikā neuztur kārtību.
  • Tas satur unikālus elementus.
  • Tas darbojas pēc jaukšanas principa.

TreeMap

TreeMap klase paplašinās AbstractMap klase un darbarīki Navigējamā karte , Klonējams , un Serializējams saskarne. TreeMap ir piemērs a Sakārtota karte . To īsteno sarkans-melnais koks, kas nozīmē, ka taustiņu secība ir sakārtota.

  • TreeMap satur arī vērtību, kuras pamatā ir atslēga.
  • TreeMap ir sakārtots pēc taustiņiem.
  • Tas satur unikālus elementus.
  • Tam nevar būt nulles atslēga, bet tai ir vairākas nulles vērtības.
  • Atslēgas ir augošā secībā.
  • Tas saglabā objektu koka struktūrā.

Līdzības starp HashMap un TreeMap

    HashMapun TreeMap klases īsteno Klonējams un Serializējams saskarne.
  • Abas klases pagarina AbstractMap klasē.
  • Karte ir objekts, kas glabājas atslēgas vērtība pāriem. Atslēgu un vērtību pārī katra atslēga ir unikāla, taču to vērtības var būt dublikāts .
  • Abas klases apzīmē kartēšanu no taustiņu uz vērtības .
  • Abas kartes nav sinhronizēts .
  • Kartes lietošana likt () metode elementa pievienošanai kartei.
  • Iterators izmet a ConcurrentModificationException ja karte jebkādā veidā tiek pārveidota.

Galvenā atšķirība starp HashMap un TreeMap ir:

HashMap nesaglabā iterācijas secību, kamēr TreeMap saglabājiet pasūtījumu, izmantojot Salīdzinot ar() metode vai a salīdzinātājs iestatīts TreeMap konstruktorā.

Šajā tabulā ir aprakstītas atšķirības starp HashMap un TreeMap.

Pamats HashMap TreeMap
Definīcija Java HashMap ir uz hashtable balstīta kartes saskarnes ieviešana. Java TreeMap ir uz koka struktūru balstīta kartes saskarnes ieviešana.
Interfeisa iekārtas HashMap iekārtas Karte, klonējama , un Serializējams saskarne. TreeMap iekārtas Navigējama karte, klonējama , un Serializējams saskarne.
Null taustiņi/ vērtības HashMap ļauj a viens nulles atslēga un vairākas nulles vērtības. TreeMap neļauj null atslēgas, bet var būt vairākas nulles vērtības.
Homogēns/ Heterogēns HashMap pieļauj neviendabīgus elementus, jo tas neveic taustiņu šķirošanu. TreeMap ļauj izmantot viendabīgas vērtības kā atslēgu šķirošanas dēļ.
Performance HashMap ir ātrāk nekā TreeMap, jo tā nodrošina pastāvīgu veiktspēju, kas ir O(1) tādām pamatoperācijām kā get() un put(). TreeMap ir lēns salīdzinājumā ar HashMap, jo tas nodrošina O(log(n)) veiktspēju lielākajai daļai darbību, piemēram, add(), remove() un satur().
Datu struktūra HashMap klase izmanto hash tabula . TreeMap iekšēji izmanto a Sarkans-Melns koks, kas ir pašbalansējošs binārais meklēšanas koks.
Salīdzināšanas metode Tā izmanto vienāds () metode Objekts klasē, lai salīdzinātu atslēgas. Map klases metode equals() to ignorē. Tas izmanto Salīdzinot ar() atslēgu salīdzināšanas metode.
Funkcionalitāte HashMap klase satur tikai tādas pamatfunkcijas kā get(), put(), KeySet() utt. TreeMap klase ir bagāta ar funkcionalitāti, jo tajā ir tādas funkcijas kā: tailMap(), firstKey(), pēdējaisKey(), pollFirstEntry(), pollLastEntry() .
Elementu secība HashMap neuztur nekādu kārtību. Elementi ir sakārtoti dabiskā kārtība (augošā veidā).
Lietojumi HashMap ir jāizmanto, ja nav nepieciešams atslēgas-vērtības pāris sakārtotā secībā. TreeMap ir jāizmanto, ja mums ir nepieciešams atslēgas un vērtības pāris sakārtotā (augošā) secībā.

HashMap vs TreeMap piemērs

Nākamajā piemērā mēs varam novērot, ka HashMap elementi ir nejaušā secībā, bet TreeMap elementi ir sakārtoti augošā secībā.

 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()); } } } 

Izvade:

Atšķirība starp HashMap un TreeMap