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
- 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: