Razlika između HashMap-a i TreeMap-a na Javi

Autor: Laura McKinney
Datum Stvaranja: 2 Travanj 2021
Datum Ažuriranja: 11 Svibanj 2024
Anonim
HashMap, LinkedHashMap and TreeMap in Java
Video: HashMap, LinkedHashMap and TreeMap in Java

Sadržaj


HashMap i TreeMap su klase Map i obje implementiraju sučelje Map. Map je objekt koji pohranjuje parove ključ-vrijednost, gdje je svaki ključ jedinstven, ali mogu postojati duplicirane vrijednosti. HashMap klasa koristi hash tablicu kao strukturu podataka. TreeMap koristi crveno-crno stablo kao strukturu podataka. Glavna razlika između HashMap-a i Treemapa je ta HashMap ne čuva redoslijed umetanja dok, stablu ne.

Pa započnimo našu raspravu o razlikama između HashMap-a i TreeMap-a uz pomoć dijagrama usporedbe prikazanog dolje.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedbuHashMapstablu
Osnovni, temeljni HashMap ne održava redoslijed umetanja.TreeMap održava redoslijed umetanja.
podatkovna strukturaHashMap koristi Hash Table kao temeljnu strukturu podataka.TreeMap koristi crveno-crno drvo kao temeljnu strukturu podataka.
Nulte ključeve i vrijednosti HashMap omogućava Null ključ jednom oglasa Null vrijednost bilo koji broj vremena.TreeMap ne dopušta Null Key, ali dopušta Null Vrijednosti bilo koji broj vremena.
Proširenja i implementacijeHashMap proširuje klasu AbstractMap i implementira Map sučelje.TreeMap proširuje klasu AbstractMap i implementira SortedMap i NavigableMap sučelje.
IzvođenjeHashMap djeluje brže.TreeMap u odnosu na HashMap djeluje sporije.


Definicija HashMap-a

HashMap je klasa Map. Koristi hash table, kao struktura podataka za spremanje parova vrijednosti ključeva karte. Umetanje para ključ-vrijednost vrši se pomoću hash kod od ključevi, Dakle, svaki ključ na karti mora biti jedinstven jer će se koristiti za dohvaćanje vrijednosti.

Redoslijed umetanja u HashMap je ne sačuvano, što znači da objekt hashmap ne vraća elemente u redoslijedu u koji su bili umetnuti. S druge strane, redoslijed vraćanja elemenata nije fiksiran.

ključ dozvoljeno je biti NULL odjednom, ali ono vrijednosti Može biti NULL u bilo koje vrijeme. HashMap može sadržavati heterogen objekti za ključeve kao i vrijednosti.

Postoje četiri konstruktora HashMap-a:

HashMap () HashMap (karta m) HashMap (int kapacitet), HashMap (int kapacitet, float fillRatio)

prvi konstruktor stvara prazan objekt HashMap-a. drugi konstruktor inicijalizira HashMap koristeći elemente Map m. treći konstruktor inicijalizira HashMap s kapacitetom navedenim u argumentu. četvrti konstruktor inicijalizira kapacitet kao i omjer ispunjavanja HashMap objekta.


Zadani kapacitet HashMap-a je 16, i zadano omjer punjenja HashMap-a je 0.75.

Definicija TreeMap-a

Kao HashMap, stablu je i klasa Map. TreeMap se proširuje AbstractMap klasa i pomagala NavigabelMap i SortedMap, Objekti TreeMap pohranjuju elemente karte u strukturu stabla. Struktura podataka koja se koristi za pohranu karte je Crveno-crno drvo.

TreeMap pohranjuje par ključeva vrijednosti u poredanim redoslijedom, što pomaže u brzom pronalaženju elemenata. Objekt TreeMap vraća elemente u sortirati (uzlazni) narudžba.

Postoje četiri konstruktora TreeMap-a:

TreeMap () TreeMap (komparator <? Super K> comp) TreeMap (Map <? Proširuje K,? Proširuje V> m) TreeMap (SortedMap sm)

prvi konstruktori stvaraju prazan objekt TreeMap-a koji bi se prirodnim redoslijedom razvrstao po ključevima. drugi konstruktor će stvoriti praznu kartu stabla koju će razvrstati po Uporedni cmp, treći konstruktor gore stvorit će mapu karte koja će se inicijalizirati pomoću unosa Karta m, četvrti konstruktor će stvoriti mapu karte koja će se inicijalizirati pomoću unosa SortedMap sm.

Treemap nema svoju novu metodu, koristi metodu sučelja NavigableMap i SortedMap i klasu AbstractMap.

  1. Obje klase koriste se za izradu objekata karata, ali osnovna razlika između HashMap-a i Treemap-a je u tome što HashMap ne održava redoslijed umetanja dok Treemap ima.
  2. Struktura podataka koju Hashmap koristi za pohranu elemenata karte je tablica hash-a, a struktura podataka koju TreeMap koristi za pohranu elemenata karte je crveno-crno stablo.
  3. Obje klase Hashmap i Treemap proširuju klasu AbstractMap, no klasa HashMap implementira Map sučelje, a TreeMap implementira sučelje NavigableMap i SortedMap.
  4. Vrijednosti mogu biti Null bilo koji broj vremena u obje, ali ključ smije biti Null samo jednom u HashMap-u, a ključ nikada ne može biti u Treemap-u.
  5. Uspjeh HashMap-a brži je, ne gubi vrijeme na sortiranje elemenata karte kao što to čini TreeMap. Dakle, TreeMap radi sporije od HashMap-a.

Zaključak:

TreeMap treba koristiti samo kad vam je potreban par ključeva u sortiranom obliku. Kako razvrstavanje uključuje troškove izvedbe. Budući da je HashMap nesinhroniziran, radi brže.