Razlike između HashMap-a i TreeMap-a

HashMap je bio dio Java kolekcije. Omogućuje osnovnu implementaciju Java Map sučelja. Podaci se pohranjuju u parove (ključ, vrijednost). Da biste pristupili vrijednosti, morate znati njezin ključ. HashMap je poznat kao HashMap jer koristi tehniku ​​Hashing. TreeMap koristi se za implementaciju sučelja karte i navigabilne karte s razredom sažetaka. Karta je razvrstana prema prirodnom redoslijedu njihovih ključeva ili prema komparateru koji je dan u trenutku stvaranja karte, ovisno o tome koji se konstruktor koristi.

Sličnosti između HashMap-a i TreeMap-a

Osim razlika, postoje sljedeće sličnosti između hashmapa i treemapa:

  • Obje klase HashMap i TreeMap implementiraju prilagodljiva sučelja i Cloneable sučelja.
  • I HashMap i TreeMap proširuju klasu AbstractMap.
  • Obje klase HashMap i TreeMap rade na parovima ključ i vrijednost.
  • I HashMap i TreeMap su zbirke koje nisu sinkronizirane.
  • I HashMap i TreeMap propadaju brze kolekcije.

Obje implementacije dio su okvira prikupljanja i pohranjuju podatke u parove Key-value.

Java program koji prikazuje HashMap i TreeMap

Evo java programa koji pokazuje kako se elementi stavljaju i preuzimaju 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);
)
)

Izlaz:

Iz rezultata je jasno da hashmap ne održava nikakav red. Evo java programa koji pokazuje kako se elementi postavljaju i preuzimaju iz mape treemapa.

Kodirati:

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

Izlaz:

Iz izlaza se vidi da su tipke razvrstane u prirodnom redoslijedu. Stoga Treemap održava sortirani redoslijed.

Međusobne razlike između HashMap-a i TreeMap-a (Infographics)

Niže su navedene razlike između HashMap-a i TreeMap-a

Ključna razlika HashMap-a i TreeMap-a

Ovo su točke ključne razlike HashMap-a i TreeMap-a:

1. Struktura i provedba

Hash Map je implementacija na bazi hash tablice. Proširuje klasu Sažetak karte i implementira sučelje Map. Hash karta radi na principu raspršivanja. Implementacija Map-a djeluje kao skupljena tablica hash-a, ali kada kante dobiju preveliku veličinu, pretvaraju se u Tree čvorove, a svaka ima sličnu strukturu kao i čvorovi TreeMap-a. TreeMap proširuje klasu Sažetak karata i implementira sučelje Navigable Map. Temeljna struktura podataka za treemap je crveno-crno stablo.

2. Nalog za ponavljanje

Iteracijski redoslijed Hash karte nije definiran, dok se elementi TreeMap-a naručuju u prirodnom redoslijedu ili u prilagođenom redoslijedu navedenom pomoću komparatora.

3. Performanse

Kako je Hashmap implementacija utemeljena na raspršivanju, ona daje performanse stalnog vremena koje su jednake O (1) za većinu uobičajenih operacija. Vrijeme potrebno za pretraživanje elementa u hash mapi je O (1). Ali ako dođe do nepravilne implementacije u hashmapu, to može dovesti do dodatnih detekcija memorije i smanjenja performansi. S druge strane, TreeMap pruža izvedbu O (log (n)). Budući da se hashmap temelji na hashtableu, zahtijeva neprekidni raspon memorije, dok mapa karte koristi samo količinu memorije koja je potrebna za držanje predmeta. Dakle, HashMap je vremenski učinkovitiji od treemapa, ali treemap je učinkovitiji od prostora od HashMap-a.

4. Ručno rukovanje

HashMap dopušta gotovo jedan null ključ i mnoge null vrijednosti, dok se u mapu karte null ne može koristiti kao ključ iako su null vrijednosti dopuštene. Ako se null koristi kao ključ u hashmapu, izbacit će nulto iznimku pokazivača, jer interno koristi metodu usporedbe ili uspoređivanja za sortiranje elemenata.

Usporedba tablice

Ovdje je usporedna tablica koja prikazuje razlike između hashmapa i treemapa:

Osnove usporedbeHashMapstablu
Sintaksajavna klasa HashMap proširuje AbstractMap implementira Map, Cloneable, Serializablejavna klasa TreeMap proširuje apstrakcije sažetakaMapNavigableMap, Cloneable, Serializable
NaručivanjeHashMap ne daje narudžbu za elemente.Elementi su poredani u prirodnom ili prilagođenom redoslijedu.
UbrzatiBrzoUsporiti
Nulte ključeve i vrijednostiOmogućuje gotovo jednu tipku kao null i multiple null vrijednosti.Ne dopušta nulu kao ključnu, ali dopušta više null vrijednosti.
Potrošnja memorijeHashMap troši više memorije zbog dotične Hash tablice.Potroši manje memorije u odnosu na HashMap.
funkcionalnostPruža samo osnovne značajkePruža bogatije značajke.
Korištena metoda usporedbeU osnovi koristi metodu equals () za usporedbu ključeva.Za usporedbu ključeva koristi se usporedba () ili metoda usporedbeTo ().
Sučelje implementiranoKarte, Serijabilni i KlonniNavigabilna karta, Serializable i Cloneable
IzvođenjeDaje izvedbu O (1).Pruža performanse O (log n)
Struktura podatakaKoristi hash tablicu kao strukturu podataka.Koristi Crveno-crno stablo za pohranu podataka.
Homogeni i heterogeni elementiOmogućuje homogene, kao i heterogene elemente, jer ne vrši sortiranje.Dopušta samo homogene elemente dok obavlja sortiranje.
Koristite slučajeveKoristi se kada nam nisu potrebni parovi ključ i vrijednost po razvrstanom redoslijedu.Koristi se kada se moraju sortirati parovi ključ-vrijednost karte.

Zaključak

Iz članka je zaključeno da je hashmap opće namjena implementacija Map sučelja. Omogućuje performanse O (1), dok Treemap omogućuje izvedbu O (log (n)). Stoga je HashMap obično brži od TreeMap-a.

Preporučeni članci

Ovo je vodič za HashMap i TreeMap. Ovdje smo raspravljali o uvodu HashMap-a i TreeMap-a, Razlikama između Hashmapa i Treemapa-a te uporednoj tablici. Možete i proći kroz naše druge predložene članke da biste saznali više -

  1. WebLogic vs JBoss
  2. Lista vs postava
  3. Git Fetch vs Git Pull
  4. Kafka vs Spark | Glavne razlike
  5. Top 5 razlike između Kafke i Kinesis

Kategorija: