Razlike med HashMap in TreeMap
HashMap je bil del zbirke Jave. Omogoča osnovno izvajanje vmesnika Java Map. Podatki so shranjeni v parih (ključ, vrednost). Za dostop do vrednosti morate vedeti njen ključ. HashMap je znan kot HashMap, ker uporablja tehniko Hashing. TreeMap se uporablja za implementacijo vmesnika zemljevida in navigableMap z abstraktnim razredom. Zemljevid je razvrščen po naravnem vrstnem redu njegovih ključev ali primerjalniku, ki je bil ustvarjen v času izdelave zemljevida, odvisno od tega, kateri konstruktor se uporablja.
Podobnosti med HashMap in TreeMap
Poleg razlik obstajajo naslednje podobnosti med hashmap in treemap:
- Tako razredi HashMap kot TreeMap uporabljajo vmesnike, ki jih je mogoče prilagoditi in jih je mogoče odpreti.
- Tako HashMap kot TreeMap razširita razred AbstractMap.
- Oba razreda HashMap in TreeMap delujeta na parih ključ-vrednost.
- Tako HashMap kot TreeMap sta nesinhronizirani zbirki.
- Tako HashMap kot TreeMap ne uspevata hitro.
Obe izvedbi sta del okvira zbiranja in shranjujeta podatke v pare Key-value.
Program Java, ki prikazuje HashMap in TreeMap
Tukaj je java program, ki prikazuje, kako so elementi postavljeni in pridobljeni iz hashmapa:
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);
)
)
Izhod:
Iz izhoda je razvidno, da hashmap ne vzdržuje nobenega reda. Tu je java program, ki prikazuje, kako se elementi postavljajo in pridobivajo iz zemljevida zemljevida.
Koda:
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);
)
)
Izhod:
Iz izhoda je razvidno, da so tipke razvrščene v naravnem vrstnem redu. Zato Treemap vzdržuje vrstni red.
Razlike med HashMap-om in TreeMap-om (Infographics)
Spodaj so zgornje razlike med HashMapom in TreeMapom
Ključna razlika HashMap-a in TreeMap-a
Sledijo točke ključnih razlik HashMap in TreeMap:
1. Struktura in izvajanje
Hash Map je izvedba na osnovi hash tabele. Razširja razred Abstraktna karta in izvaja vmesnik Map. Hash Map deluje na principu mešanja. Izvedba Zemljevida deluje kot tabela hash buted, vendar ko vedra postanejo prevelike velikosti, se pretvorijo v vozlišča Tree, vsaka pa ima podobno strukturo kot vozlišča TreeMap. TreeMap razširja razred abstraktnih zemljevidov in uporablja vmesnik Navigable Map. Osnovna struktura podatkov za zemljevid zemljevida je rdeče-črno drevo.
2. Iteracijski ukaz
Iteracijski vrstni red Hash Map ni določen, medtem ko so elementi TreeMap urejeni v naravnem vrstnem redu ali po meri, določeni s primerjalnikom.
3. Zmogljivost
Ker je Hashmap izvedba, ki temelji na hitrih načinih, zagotavlja zmogljivost v stalnem času, ki je za večino običajnih operacij enaka O (1). Čas, potreben za iskanje elementa na hash zemljevidu, je O (1). Če pa v hashmapu pride do nepravilne izvedbe, lahko to povzroči dodatne režijske pomnilnike in poslabšanje zmogljivosti. Po drugi strani TreeMap zagotavlja zmogljivost O (log (n)). Ker temelji hashmap, je potreben neprekinjen obseg pomnilnika, medtem ko treemap uporablja samo toliko pomnilnika, ki je potreben za shranjevanje predmetov. Zato je HashMap časovno učinkovitejši od zemljevida zemljevidov, vendar je treemap prostorno bolj učinkovit kot HashMap.
4. Ničelno ravnanje
HashMap omogoča skoraj en null ključ in veliko ničelnih vrednosti, medtem ko v preskusni mapi null ni mogoče uporabiti kot ključno, čeprav so nične vrednosti dovoljene. Če je null uporabljen kot ključ v hashmapu, bo vrgel izjemo ničelnega kazalca, ker interno uporablja metodo primerjave ali primerjaveTo za razvrščanje elementov.
Primerjava preglednice
Tukaj je primerjalna tabela, ki prikazuje razlike med hashmap in treemap:
Osnova za primerjavo | HashMap | TreeMap |
Sintaksa | javni razred HashMap razširja AbstractMap izvaja Map, Cloneable, Serializable | javni razred TreeMap razširja izvedbe AbstractMapNavigableMap, Cloneable, Serializable |
Naročanje | HashMap ne zagotavlja nobenega naročila za elemente. | Elementi so razvrščeni v naravnem ali prilagojenem vrstnem redu. |
Hitrost | Hitro | Počasi |
Ničelni ključi in vrednosti | Omogoča skoraj eno tipko kot nič in več ničelnih vrednosti. | Ne dovoljuje null kot ključ, vendar omogoča več ničelnih vrednosti. |
Poraba pomnilnika | HashMap porabi več pomnilnika zaradi osnovne Hash Tabele. | V primerjavi s HashMapom porabi manj pomnilnika. |
Funkcionalnost | Ponuja samo osnovne funkcije | Omogoča bogatejše lastnosti. |
Uporabljena metoda primerjave | V osnovi uporablja metodo equals () za primerjavo ključev. | Za primerjavo ključev uporabljamo metodo primerjave () ali primerjaveTo (). |
Vmesnik izveden | Zemljevid, prilagodljiv in kloniran | Navigable Map, Serializable in Cloneable |
Izvedba | Omogoči uspešnost O (1). | Zagotavlja delovanje O (log n) |
Struktura podatkov | Kot strukturo podatkov uporablja hash tabelo. | Uporablja rdeče-črno drevo za shranjevanje podatkov. |
Homogeni in heterogeni elementi | Omogoča homogene in raznolike elemente, ker ne izvaja nobenega razvrščanja. | Pri sortiranju omogoča le homogene elemente. |
Uporabite primere | Uporabljamo, kadar ne potrebujemo parov ključ-vrednost v razvrščenem vrstnem redu. | Uporablja se, kadar je treba razvrstiti pare ključ-vrednost zemljevida. |
Zaključek
Iz članka je sklenjeno, da je hashmap splošna izvedba vmesnika Map. Omogoča delovanje O (1), medtem ko Treemap zagotavlja zmogljivost O (log (n)). Zato je HashMap ponavadi hitrejši kot TreeMap.
Priporočeni članki
To je vodnik za HashMap proti TreeMap. Tukaj razpravljamo o uvodu v HashMap proti TreeMap-u, o razlikah med Hashmapom in Treemapom ter primerjalni tabeli. Obiščite lahko tudi druge naše predlagane članke, če želite izvedeti več -
- WebLogic vs JBoss
- Seznam proti nizu
- Git Fetch proti Git Pull
- Kafka proti iskri | Najboljše razlike
- Najboljših 5 razlik med Kafko in Kinesis