logo

Ero HashMapin ja TreeMapin välillä

Java HashMap ja TreeMap molemmat ovat Java Collections -kehyksen luokkia. Java Map -toteutus toimii yleensä sekoitettuna hash-taulukkona. Kun kauhat kasvavat liian suuriksi, ne muuttuvat solmuiksi TreeNodes , joista jokainen on rakenteeltaan samanlainen kuin sisällä olevat java.util.TreeMap .

HashMap

HashMap-työkalut Kartta, kloonattava ja Sarjasoitavissa käyttöliittymä. Se ulottuu AbstractMap luokkaa. Se kuuluu java.util paketti.

  • HashMap sisältää avaimeen perustuvan arvon.
  • Siinä voi olla yksi tyhjä avain ja useita nolla-arvoja.
  • HashMap ei ylläpidä järjestystä iteroinnin aikana.
  • Se sisältää ainutlaatuisia elementtejä.
  • Se toimii hajautusperiaatteella.

TreeMap

TreeMap-luokka laajenee AbstractMap luokka ja välineet Navigoitava kartta , Kloonattavissa , ja Sarjasoitavissa käyttöliittymä. TreeMap on esimerkki a Lajiteltu kartta . Se on toteutettu Red-Black -puulla, mikä tarkoittaa, että avainten järjestys on lajiteltu.

  • TreeMap sisältää myös avaimeen perustuvan arvon.
  • TreeMap on lajiteltu avainten mukaan.
  • Se sisältää ainutlaatuisia elementtejä.
  • Sillä ei voi olla nolla-avainta, mutta siinä on useita nolla-arvoja.
  • Avaimet ovat nousevassa järjestyksessä.
  • Se tallentaa kohteen puurakenteeseen.

HashMapin ja TreeMapin yhtäläisyydet

    HashMapja TreeMap luokat toteuttavat Kloonattavissa ja Sarjasoitavissa käyttöliittymä.
  • Molemmat luokat laajenevat AbstractMap luokkaa.
  • Kartta on esine, joka tallentaa avainarvo pareja. Avain-arvo-parissa jokainen avain on ainutlaatuinen, mutta niiden arvot voivat olla kaksoiskappale .
  • Molemmat luokat edustavat kartoitusta avain to arvot .
  • Molemmat kartat eivät ole synkronoitu .
  • Kartan käyttö laittaa() tapa lisätä elementti karttaan.
  • Iteraattori heittää a ConcurrentModificationException jos karttaa muutetaan millään tavalla.

Tärkein ero HashMapin ja TreeMapin välillä on:

HashMap ei säilytä iteraatiojärjestystä, kun TreeMap säilytä tilaus käyttämällä vertaa() menetelmä tai a vertailija asetettu TreeMapin konstruktoriin.

Seuraavassa taulukossa kuvataan HashMapin ja TreeMapin väliset erot.

Perusta HashMap TreeMap
Määritelmä Java HashMap on hashtable-pohjainen Map-käyttöliittymän toteutus. Java TreeMap on puurakennepohjainen Map-käyttöliittymän toteutus.
Käyttöliittymä toteuttaa HashMap-työkalut Kartta, kloonattava , ja Sarjasoitavissa käyttöliittymä. TreeMap-työkalut NavigableMap, kloonattava , ja Sarjasoitavissa käyttöliittymä.
Nollanäppäimet/arvot HashMap mahdollistaa a yksittäinen nolla-avain ja useita nolla-arvot. TreeMap ei salli tyhjä avaimet, mutta voi olla useita nolla-arvot.
Homogeeninen/ heterogeeninen HashMap sallii heterogeeniset elementit, koska se ei suorita lajittelua avaimille. TreeMap sallii homogeeniset arvot avaimena lajittelun vuoksi.
Esitys HashMap on nopeammin kuin TreeMap, koska se tarjoaa jatkuvan suorituskyvyn, joka on O(1) perusoperaatioille, kuten get() ja put(). TreeMap on hidas verrattuna HashMapiin, koska se tarjoaa O(log(n))-suorituskyvyn useimmille toiminnoille, kuten add(), remove() ja include().
Tietorakenne HashMap-luokka käyttää hash-taulukko . TreeMap käyttää sisäisesti a Punamusta puu, joka on itsetasapainottava binäärihakupuu.
Vertailumenetelmä Se käyttää on yhtä suuri () menetelmä Esine luokka vertailla avaimia. Map-luokan equals()-metodi ohittaa sen. Se käyttää vertaa() tapa verrata avaimia.
Toiminnallisuus HashMap-luokka sisältää vain perustoiminnot, kuten get(), laita(), KeySet() , jne. . TreeMap-luokka on runsaasti toimintoja, koska se sisältää toimintoja, kuten: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Elementtien järjestys HashMap ei ylläpidä mitään järjestystä. Elementit lajitellaan luonnollinen järjestys (nouseva).
Käyttää HashMapia tulee käyttää, kun emme vaadi avain-arvo-paria lajiteltuna. TreeMapia tulee käyttää, kun vaadimme avain-arvo-paria lajiteltuna (nousevassa) järjestyksessä.

Esimerkki HashMap vs TreeMap

Seuraavassa esimerkissä voimme havaita, että HashMapin elementit ovat satunnaisessa järjestyksessä, kun taas TreeMapin elementit on järjestetty nousevaan järjestykseen.

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

Lähtö:

Ero HashMapin ja TreeMapin välillä