Különbségek a HashMap és a TreeMap között
A HashMap a Java gyűjteményének része. Ez biztosítja a Java Map Interface alapvető megvalósítását. Az adatokat (kulcs, érték) párokban tárolják. Az érték eléréséhez meg kell tudnia a kulcsát. A HashMap HashMap néven ismert, mert a Hashing technikát használja. A TreeMap a Térkép interfész és a Navigálható térkép megvalósításához használható az Absztrakt osztályhoz. A térképet a kulcsok természetes sorrendje szerint, vagy a térkép létrehozásakor megadott összehasonlító szerint rendezik, attól függően, hogy melyik konstruktort használják.
Hasonlóságok a HashMap és a TreeMap között
A különbségeken kívül a következő hasonlóságok vannak a hashmap és a fatérkép között:
- Mind a HashMap, mind a TreeMap osztályok soroztatható és klónozható interfészeket valósítanak meg.
- A HashMap és a TreeMap kiterjesztik az AbstractMap osztályt.
- Mind a HashMap, mind a TreeMap osztály kulcs-érték páron működik.
- Mind a HashMap, mind a TreeMap nem szinkronizált gyűjtemények.
- Mind a HashMap, mind a TreeMap nem képesek gyors gyűjteményekre.
Mindkét megvalósítás a gyűjtési keret része, és az adatokat kulcs-érték párokban tárolja.
Java program a HashMap és a TreeMap megjelenítésére
Itt van egy java program, amely bemutatja, hogy az elemeket hogyan helyezzék el és nyerik ki a hashmapból:
package com.edubca.map;
import java.util.*;
class HashMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
HashMap hashmap =
new HashMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = hashmap.get(arr(i));
// If first occurrence of the element
if (hashmap.get(arr(i)) == null)
hashmap.put(arr(i), 1);
// If elements already present in hash map
else
hashmap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m:hashmap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test the above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)
Kimenet:
A kimeneti adatok alapján egyértelmű, hogy a hashmap nem tart fenn rendet. Itt egy java program, amely bemutatja, hogy az elemeket hogyan helyezzék el és töltsék le a fatérképből.
Kód:
package com.edubca.map;
import java.util.*;
class TreeMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
TreeMap treemap =
new TreeMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = treemap.get(arr(i));
// If first occurrence of element
if (treemap.get(arr(i)) == null)
treemap.put(arr(i), 1);
// If elements already present in hash map
else
treemap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m: treemap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)
Kimenet:
A kimenet alapján megfigyelhető, hogy a kulcsok természetes sorrendben vannak rendezve. Ezért a Treemap fenntartja a rendezett sorrendet.
Head-to-Head különbségek a HashMap és a TreeMap (Infographics) között
Az alábbiakban bemutatjuk a legfontosabb különbségeket a HashMap és a TreeMap között
A HashMap és a TreeMap legfontosabb különbsége
Az alábbiakban a kulcs-különbség HashMap és TreeMap pontjai találhatók:
1. Felépítés és végrehajtás
A Hash Map egy kivonatos táblákon alapuló megvalósítás. Bővíti az Absztrakt Térkép osztályt és megvalósítja a Térkép felületet. A has-térkép a kivágás elvén működik. A Térkép megvalósítása kibontott kivonat-táblázatként működik, de ha a vödrök túl nagyok, fa csomópontokká alakulnak át, mindegyik hasonló szerkezetű, mint a TreeMap csomópontjai. A TreeMap kiterjeszti az Absztrakt Térkép osztályt és megvalósítja a Navigálható térkép felületet. A fatérkép mögöttes adatszerkezete egy vörös-fekete fa.
2. Iratációs sorrend
A hasítótérkép ismétlési sorrendje nincs meghatározva, míg a TreeMap elemei természetes sorrendben vagy egy összehasonlító segítségével megadott egyedi sorrendben vannak rendezve.
3. Teljesítmény
Mivel a Hashmap egy kiváló alapú megvalósítás, az állandó működési időt nyújt, amely megegyezik az O (1) értékkel a legtöbb általános művelet során. Egy elemnek a hash-térképen való kereséséhez szükséges idő O (1). De ha a hashmapban nincs helyes végrehajtás, akkor ez további memóriaterhelést és a teljesítmény romlását eredményezheti. Másrészt a TreeMap O teljesítményt nyújt (log (n)). Mivel a hashmap hashtable alapú, folytonos memóriatartományt igényel, míg a fatérkép csak az elemek tárolásához szükséges memória mennyiségét használja. Ennélfogva a HashMap sokkal időhatékonyabb, mint a fatérkép, de a fatérképe hatékonyabb a térhatékonyság, mint a HashMap.
4. Nulla kezelés
A HashMap szinte egyetlen null kulcsot és sok null értéket tesz lehetővé, míg a fatérképben a null nem használható kulcsként, bár a null értékek megengedettek. Ha a null kulcsként szerepel a hashmapban, akkor a null mutató kivételét fogja dobni, mivel belső részében az Összehasonlítás vagy az Összehasonlítás módszert használja az elemek rendezéséhez.
A táblázat összehasonlítása
Itt található egy összehasonlító táblázat, amely bemutatja a hashmap és a fatérkép közötti különbségeket:
Az összehasonlítás alapja | HashMap | Treemap |
Szintaxis | A nyilvános osztályú HashMap kiterjeszti az AbstractMap eszközöket a Map, Cloneable, Serializable és MapS eszközökre | A nyilvános osztályú TreeMap kiterjeszti az AbstractMap implementációs eszközöket, NonavibleMap, Cloneable, Serializable |
Rendelés | A HashMap nem ad megrendelést az elemekhez. | Az elemeket természetes vagy testreszabott sorrendben rendezzük el. |
Sebesség | Gyors | Lassú |
Null kulcsok és értékek | Szinte egy kulcsot lehetővé tesz null és több null értékként. | Nem engedélyezi a null kulcsot, de több null értéket is engedélyez. |
Memóriafelhasználás | A HashMap több memóriát fogyaszt az alapul szolgáló Hash Table miatt. | Kevesebb memóriát fogyaszt a HashMap-hez képest. |
funkcionalitás | Csak alapvető szolgáltatásokat nyújt | Gazdagabb tulajdonságokkal rendelkezik. |
Az alkalmazott összehasonlítási módszer | Alapvetően az equals () metódust használja a kulcsok összehasonlításához. | Az összehasonlítás () vagy az összehasonlítás () módszerét használja a kulcsok összehasonlításához. |
Interfész megvalósítva | Térkép, sorolandó és klónozható | Navigálható térkép, sorozható és klónozható |
Teljesítmény | O (1) teljesítményt ad. | Biztosítja az O teljesítményét (log n) |
Az adatok felépítése | A hash táblát adatszerkezetként használja. | A Red-Black Tree felhasználását használja az adatok tárolására. |
Homogén és heterogén elemek | Ez lehetővé teszi a homogén és heterogén elemeket is, mivel nem végez válogatást. | Csak a homogén elemeket teszi lehetővé, mivel válogatást hajtanak végre. |
Használjon tokot | Használjuk, amikor nem igényelünk kulcs-érték párokat rendezett sorrendben. | Akkor használják, amikor a térkép kulcs-érték párját rendezni kell. |
Következtetés
A cikkből arra a következtetésre jutunk, hogy a hashmap a Map felület általános célú megvalósítása. O (1) teljesítményt nyújt, míg a Treemap O (log (n)) teljesítményét nyújtja. Ezért a HashMap általában gyorsabb, mint a TreeMap.
Ajánlott cikkek
Ez egy útmutató a HashMap vs TreeMap oldalhoz. Itt tárgyaljuk a HashMap vs TreeMap bevezetését, a Hashmap és a Treemap közötti különbségeket és az összehasonlító táblázatot. A további javasolt cikkeken keresztül további információkat is megtudhat -
- WebLogic vs JBoss
- Lista vs készlet
- Git Fetch vs Git Pull
- Kafka vs Spark | Legfontosabb különbségek
- A Kafka és a Kinesis öt legfontosabb különbsége