Diferențele dintre HashMap și TreeMap

HashMap a făcut parte din colecția Java. Oferă implementarea de bază a interfeței Java Map. Datele sunt stocate în perechi (cheie, valoare). Trebuie să știți cheia acesteia pentru a accesa o valoare. HashMap este cunoscut sub numele de HashMap, deoarece folosește tehnica Hashing. TreeMap este utilizat pentru a implementa interfața Map și NavigableMap cu clasa Abstract. Harta este sortată în funcție de ordinea naturală a tastelor sale sau de comparatorul furnizat la momentul creării hărții, în funcție de constructorul folosit.

Asemănări între HashMap și TreeMap

În afară de diferențe, există hashmap și treemap următoarele:

  • Ambele clase HashMap și TreeMap implementează interfețe Serializable și Cloneable.
  • Atât HashMap, cât și TreeMap extind clasa AbstractMap.
  • Ambele clase HashMap și TreeMap operează pe perechi cheie-valoare.
  • Atât HashMap, cât și TreeMap sunt colecții nesincronizate.
  • Atât HashMap, cât și TreeMap nu reușesc colecțiile rapide.

Ambele implementări fac parte din cadrul de colectare și stochează date în perechi cheie-valoare.

Program Java care prezintă HashMap și TreeMap

Iată un program java care demonstrează modul în care elementele sunt puse și preluate din hashmap:

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

ieşire:

Din ieșire, este clar că hashmap nu menține nicio ordine. Iată un program java care demonstrează modul în care elementele sunt puse și preluate din treemap.

Cod:

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

ieşire:

Din ieșire, se observă că cheile sunt sortate într-o ordine naturală. Prin urmare, Treemap menține ordinea sortată.

Diferențele de la cap la cap între HashMap și TreeMap (Infografie)

În cele ce urmează, sunt prezentate diferențele de top între HashMap și TreeMap

Diferența cheie a HashMap față de TreeMap

Următoarele sunt punctele de diferență cheie HashMap și TreeMap:

1. Structura și implementarea

Hash Map este o implementare bazată pe tabela hash. Extinde clasa Abstract Map și implementează interfața Map. O Hash Map funcționează pe principiul hașei. Implementarea Hărții acționează ca o tabelă de hash cupă, dar atunci când gălețile au dimensiuni prea mari, acestea se transformă în noduri Tree, fiecare având o structură similară cu nodurile TreeMap. TreeMap extinde clasa Abstract Map și implementează o interfață Map Navigable. Structura de date de bază pentru treemap este un arbore roșu-negru.

2. Ordinul de iterare

Ordinea de iterație a Hash Map nu este definită, în timp ce elementele unui TreeMap sunt ordonate în ordine naturală sau într-o ordine personalizată specificată folosind un comparator.

3. Performanță

Deoarece Hashmap este o implementare bazată pe hashtable, oferă o performanță în timp constant care este egală cu O (1) pentru majoritatea operațiilor comune. Timpul necesar pentru a căuta un element într-o hartă hash este O (1). Dar dacă există o implementare necorespunzătoare în hashmap, acest lucru poate duce la o depășire suplimentară a memoriei și degradarea performanței. Pe de altă parte, TreeMap oferă o performanță de O (log (n)). Deoarece hashmap este bazat pe hashtable, acesta necesită o gamă contiguă de memorie, în timp ce un mapă de bază folosește doar cantitatea de memorie necesară pentru a reține elemente. Prin urmare, HashMap este mai eficient în timp decât treemap, dar treemap este mai eficient în spațiu decât HashMap.

4. Manipulare nulă

HashMap permite aproape o cheie nulă și multe valori nule, în timp ce, într-o treemap, null nu poate fi utilizat ca cheie, deși sunt permise valori nule. Dacă null este utilizat ca cheie în hashmap, acesta va arunca o excepție de poză nulă deoarece utilizează în mod intern metoda compare sau compareTo pentru sortarea elementelor.

Comparație din tabel

Iată un tabel de comparație care prezintă diferențele dintre hashmap și treemap:

Bazele comparațieiHashMapTreeMap
Sintaxăclasa publică HashMap extinde AbstractMap implementează Map, Cloneable, Serializablepublic class TreeMap extinde aplicații AbstractMapNavigableMap, Cloneable, Serializable
ComandaHashMap nu oferă nicio comandă pentru elemente.Elementele sunt comandate într-o ordine naturală sau personalizată.
VitezăRapidÎncet
Taste și valori nulePermite aproape o cheie ca valori nule și multiple.Nu permite null ca cheie, dar permite mai multe valori nule.
Consumul de memorieHashMap consumă mai multă memorie din cauza tabelului Hash de bază.Consuma mai puțină memorie în comparație cu HashMap.
FuncționalitateOferă numai caracteristici de bazăOferă caracteristici mai bogate.
Metoda de comparare folosităPractic folosește metoda egal () pentru a compara tastele.Utilizează metoda compare () sau compareTo () pentru a compara tastele.
Interfață implementatăHărți, Serializabile și ClonabileHarta Navigabilă, Serializabilă și Clonabilă
PerformanţăDă o performanță de O (1).Oferă performanța O (log n)
Structură de dateUtilizează tabelul hash ca structură de date.Utilizează Arborele Roșu-Negru pentru stocarea datelor.
Elemente omogene și eterogenePermite elemente omogene, precum și eterogene, deoarece nu efectuează nicio sortare.Permite numai elemente omogene, deoarece realizează sortarea.
Cazuri de utilizareFolosit atunci când nu necesită perechi cheie-valoare în ordine sortată.Utilizată atunci când perechile cheie-valoare ale unei hărți trebuie să fie sortate.

Concluzie

Din articol, se concluzionează că hashmap-ul este o implementare cu scop general a interfeței Map. Oferă performanța O (1) în timp ce Treemap oferă o performanță a O (log (n)). Prin urmare, HashMap este de obicei mai rapid decât TreeMap.

Articole recomandate

Acesta este un ghid pentru HashMap vs TreeMap. Aici vom discuta introducerea HashMap vs TreeMap, diferențele dintre Hashmap și Treemap și un tabel de comparație. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. WebLogic vs JBoss
  2. Listă vs Setare
  3. Git Fetch vs Git Pull
  4. Kafka vs Spark | Diferențe de top
  5. Top 5 Diferențe de Kafka față de Kinesis