logo

Skirtumas tarp HashMap ir TreeMap

Java HashMap ir TreeMap abi yra „Java Collections“ sistemos klasės. „Java Map“ diegimas paprastai veikia kaip maišos lentelė su segmentais. Kai kibirai tampa per dideli, jie virsta mazgais TreeNodes , kurių kiekvieno struktūra panaši į esančias java.util.TreeMap .

HashMap

HashMap padargai Žemėlapis, klonuojamas ir Serializuojama sąsaja. Jis tęsiasi AbstractMap klasė. Tai priklauso java.util paketą.

  • „HashMap“ yra vertė, pagrįsta raktu.
  • Jis gali turėti vieną nulinį raktą ir kelias nulines reikšmes.
  • HashMap nepalaiko tvarkos kartodamas.
  • Jame yra unikalių elementų.
  • Jis veikia maišos principu.

TreeMap

TreeMap klasė plečiasi AbstractMap klasė ir padargai Naviguojamas žemėlapis , Galima klonuoti , ir Serializuojama sąsaja. TreeMap yra pavyzdys a Rūšiuotas žemėlapis . Jį įgyvendina raudonai juodas medis, o tai reiškia, kad raktų tvarka yra rūšiuojama.

įterpimo rūšiavimas
  • TreeMap taip pat turi reikšmę, pagrįstą raktu.
  • TreeMap yra rūšiuojamas pagal raktus.
  • Jame yra unikalių elementų.
  • Jis negali turėti nulinio rakto, bet turi kelias nulines reikšmes.
  • Raktai yra didėjančia tvarka.
  • Jis saugo objektą medžio struktūroje.

„HashMap“ ir „TreeMap“ panašumai

    HashMapir TreeMap klasės įgyvendina Galima klonuoti ir Serializuojama sąsaja.
  • Abi klasės tęsiasi AbstractMap klasė.
  • Žemėlapis yra saugomas objektas rakto vertė porų. Rakto-reikšmių poroje kiekvienas raktas yra unikalus, tačiau jų reikšmės gali būti dublikatas .
  • Abi klasės žymi atvaizdavimą iš Raktas į vertybes .
  • Abu žemėlapiai nėra sinchronizuoti .
  • Žemėlapio naudojimas įdėti () būdas įtraukti elementą į žemėlapį.
  • Iteratorius meta a ConcurrentModificationException jei žemėlapis bus kaip nors pakeistas.

Pagrindinis skirtumas tarp HashMap ir TreeMap yra:

HashMap neišsaugo iteracijos tvarkos, kol TreeMap išsaugoti užsakymą naudodami palyginti su() metodas arba a lyginamoji priemonė nustatyti TreeMap konstruktoriuje.

polimorfizmas java

Šioje lentelėje aprašomi „HashMap“ ir „TreeMap“ skirtumai.

Pagrindas HashMap TreeMap
Apibrėžimas Java HashMap yra maišos pagrindu sukurtas žemėlapio sąsajos įgyvendinimas. Java TreeMap yra medžio struktūra pagrįstas žemėlapio sąsajos įgyvendinimas.
Sąsajos padargai HashMap padargai Žemėlapis, klonuojamas , ir Serializuojama sąsaja. TreeMap padargai NavigableMap, Klonuojamas , ir Serializuojama sąsaja.
Nuliniai klavišai / reikšmės HashMap leidžia a viengungis nulinis klavišas ir daugkartinis nulinės reikšmės. TreeMap neleidžia nulinis raktus, bet gali turėti daugkartinis nulinės reikšmės.
Homogeniškas/ Heterogeninis „HashMap“ leidžia naudoti nevienalyčius elementus, nes neatlieka raktų rūšiavimo. TreeMap leidžia vienarūšes reikšmes kaip raktą dėl rūšiavimo.
Spektaklis HashMap yra greičiau nei TreeMap, nes jis užtikrina pastovų našumą, kuris yra O(1) pagrindinėms operacijoms, tokioms kaip get() ir put(). TreeMap yra lėtas palyginti su HashMap, nes jis suteikia O(log(n)) našumą daugeliui operacijų, tokių kaip add(), remove() ir include().
Duomenų struktūra HashMap klasė naudoja maišos lentelė . „TreeMap“ viduje naudoja a Raudona-Juoda medis, kuris yra savaime balansuojantis dvejetainis paieškos medis.
Palyginimo metodas Tai naudoja lygus () metodas Objektas klasėje, kad palygintumėte raktus. Map klasės metodas equals() jį nepaiso. Jis naudoja palyginti su() raktų palyginimo būdas.
Funkcionalumas HashMap klasėje yra tik pagrindinės funkcijos, pvz gauti(), įdėti(), KeySet() ir tt . „TreeMap“ klasė turi daug funkcijų, nes joje yra tokių funkcijų kaip: uodegos žemėlapis(), pirmasis raktas(), paskutinis raktas(), apklausaPirmasis įrašas(), apklausaLastEntry() .
Elementų tvarka HashMap nepalaiko jokios tvarkos. Elementai surūšiuoti natūrali tvarka (didėjantis).
Naudoja „HashMap“ turėtų būti naudojamas, kai nereikalaujame rakto-reikšmių poros rūšiavimo tvarka. „TreeMap“ turėtų būti naudojamas, kai reikalaujame rakto-reikšmių poros rūšiavimo (didėjimo) tvarka.

HashMap vs TreeMap pavyzdys

Toliau pateiktame pavyzdyje galime pastebėti, kad HashMap elementai yra atsitiktine tvarka, o TreeMap elementai yra išdėstyti didėjančia tvarka.

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

Išvestis:

Skirtumas tarp HashMap ir TreeMap