logo

A HashMap és a TreeMap közötti különbség

Jáva HashMap és TreeMap mindkettő a Java Collections keretrendszer osztálya. A Java Map implementáció általában vödörbe rendezett hash táblaként működik. Amikor a vödrök túl nagyok lesznek, csomópontokká alakulnak át TreeNodes , mindegyik hasonló felépítésű, mint a következőben java.util.TreeMap .

HashMap

HashMap eszközök Térkép, klónozható és Sorozatozható felület. Meghosszabbodik AbstractMap osztály. hozzátartozik java.util csomag.

  • A HashMap a kulcson alapuló értéket tartalmaz.
  • Egyetlen nullkulcsot és több nullértéket tartalmazhat.
  • A HashMap nem tart fenn rendet az iteráció során.
  • Egyedi elemeket tartalmaz.
  • A hash elvén működik.

TreeMap

A TreeMap osztály kibővül AbstractMap osztály és eszközök Navigálható térkép , Klónozható , és Sorozatozható felület. A TreeMap egy példa a Rendezett térkép . Ezt a Red-Black fa valósítja meg, ami azt jelenti, hogy a billentyűk sorrendje rendeződik.

  • A TreeMap a kulcson alapuló értéket is tartalmaz.
  • A TreeMap kulcsok szerint van rendezve.
  • Egyedi elemeket tartalmaz.
  • Nem lehet null kulcsa, de több nullértéke lehet.
  • A kulcsok növekvő sorrendben vannak.
  • Az objektumot a fastruktúrában tárolja.

Hasonlóságok a HashMap és a TreeMap között

    HashMapés TreeMap osztályok valósítják meg Klónozható és Sorozatozható felület.
  • Mindkét osztály kiterjed AbstractMap osztály.
  • A térkép egy objektum, amely tárol kulcs érték párok. A kulcs-érték párban minden kulcs egyedi, de értékeik lehetnek másolat .
  • Mindkét osztály a leképezést jelenti kulcs nak nek értékeket .
  • Mindkét térkép nem szinkronizálva .
  • Térképhasználat tesz() módszer elem hozzáadásához a térképhez.
  • Az iterátor dob egy ConcurrentModificationException ha a térkép bármilyen módon módosul.

A legfontosabb különbség a HashMap és a TreeMap között:

HashMap nem őrzi meg az iterációs sorrendet, miközben a TreeMap segítségével őrizze meg a sorrendet összehasonlítani() módszer vagy a összehasonlító beállítva a TreeMap konstruktorában.

Az alábbi táblázat leírja a HashMap és a TreeMap közötti különbségeket.

Alap HashMap TreeMap
Meghatározás Jáva HashMap a Map interfész hashtable alapú megvalósítása. Jáva TreeMap a Map interfész fastruktúra alapú megvalósítása.
Interfész megvalósítások HashMap eszközök Térkép, klónozható , és Sorozatozható felület. TreeMap eszközök Navigálható térkép, klónozható , és Sorozatozható felület.
Null kulcsok/értékek A HashMap lehetővé teszi a egyetlen null kulcs és többszörös null értékek. A TreeMap nem engedélyezi nulla kulcsok, de lehet többszörös null értékek.
Homogén/ Heterogén A HashMap lehetővé teszi a heterogén elemek használatát, mivel nem végez rendezést a kulcsokon. A TreeMap a rendezés miatt engedélyezi a homogén értékeket kulcsként.
Teljesítmény A HashMap az gyorsabban mint a TreeMap, mert állandó idejű teljesítményt biztosít, amely O(1) az olyan alapvető műveletekhez, mint a get() és a put(). A TreeMap az lassú a HashMaphez képest, mert az O(log(n)) teljesítményét biztosítja a legtöbb művelethez, mint például az add(), remove() és a include().
Adatstruktúra A HashMap osztály a hash tábla . A TreeMap belsőleg a Piros fekete fa, amely egy önkiegyensúlyozó bináris keresőfa.
Összehasonlítási módszer Használja egyenlő () módszere a Tárgy osztály a kulcsok összehasonlításához. A Map osztály equals() metódusa felülírja. Használja a összehasonlítani() módszer a kulcsok összehasonlítására.
Funkcionalitás A HashMap osztály csak alapvető funkciókat tartalmaz, mint pl get(), put(), KeySet() stb. A TreeMap osztály funkcionalitásban gazdag, mert olyan funkciókat tartalmaz, mint: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Az elemek sorrendje A HashMap nem tart fenn rendet. Az elemek sorba vannak rendezve természetes rend (növekvő).
Felhasználások A HashMap-et akkor kell használni, ha nincs szükségünk kulcs-érték párra rendezett sorrendben. A TreeMap-et akkor kell használni, ha kulcs-érték párra van szükségünk rendezett (növekvő) sorrendben.

Példa a HashMap vs TreeMap alkalmazásra

A következő példában megfigyelhetjük, hogy a HashMap elemei véletlenszerű sorrendben, míg a TreeMap elemei növekvő sorrendben vannak elrendezve.

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

Kimenet:

A HashMap és a TreeMap közötti különbség