logo

Diferența dintre HashMap și TreeMap

Java HashMap și Harta copacului ambele sunt clase ale cadrului Java Collections. Implementarea Java Map acționează de obicei ca o tabelă hash cu compartimente. Când gălețile devin prea mari, ele se transformă în noduri de TreeNodes , fiecare structurat similar celor din java.util.TreeMap .

HashMap

Implementări HashMap Hartă, clonabilă și Serializabil interfață. Se extinde AbstractHarta clasă. Apartine java.util pachet.

  • HashMap conține o valoare bazată pe cheie.
  • Poate avea o singură cheie nulă și mai multe valori nule.
  • HashMap nu menține ordinea în timpul iterării.
  • Conține elemente unice.
  • Funcționează pe principiul hashingului.

Harta copacului

Clasa TreeMap se extinde AbstractHarta clasa si instrumentele Navigabil Map , Clonabil , și Serializabil interfață. TreeMap este un exemplu de a SortedMap . Este implementat de arborele Roșu-Negru, ceea ce înseamnă că ordinea cheilor este sortată.

  • TreeMap conține și o valoare bazată pe cheie.
  • TreeMap este sortată după chei.
  • Conține elemente unice.
  • Nu poate avea o cheie nulă, dar are mai multe valori nule.
  • Cheile sunt în ordine crescătoare.
  • Stochează obiectul în structura arborescentă.

Asemănări între HashMap și TreeMap

    HashMapși Harta copacului implementarea claselor Clonabil și Serializabil interfață.
  • Ambele clase se extind AbstractHarta clasă.
  • O hartă este un obiect care stochează valoare cheie perechi. În perechea cheie-valoare, fiecare cheie este unică, dar valorile lor pot fi duplicat .
  • Ambele clase reprezintă maparea de la cheie la valorile .
  • Ambele hărți nu sunt sincronizate .
  • Utilizarea hărții a pune() metoda de a adăuga un element în hartă.
  • Iteratorul aruncă a ConcurrentModificationException dacă harta se modifică în vreun fel.

Diferența cheie dintre HashMap și TreeMap este:

HashMap nu păstrează ordinea de iterație în timp ce Harta copacului păstrați ordinea utilizând compara cu() metoda sau a comparator stabilit în constructorul TreeMap.

Următorul tabel descrie diferențele dintre HashMap și TreeMap.

Bază HashMap Harta copacului
Definiție Java HashMap este o implementare bazată pe hashtable a interfeței Map. Java Harta copacului este o implementare bazată pe structura arborelui a interfeței Map.
Implementări de interfață Implementări HashMap Hartă, clonabilă , și Serializabil interfață. Implementări TreeMap NavigableMap, clonabil , și Serializabil interfață.
Chei/Valori nule HashMap permite a singur cheie nulă și multiplu valori nule. TreeMap nu permite nul chei dar poate avea multiplu valori nule.
Omogen/Eterogen HashMap permite elemente eterogene deoarece nu realizează sortarea pe chei. TreeMap permite valori omogene ca cheie din cauza sortării.
Performanţă HashMap este Mai repede decât TreeMap, deoarece oferă performanță în timp constant care este O(1) pentru operațiunile de bază precum get() și put(). TreeMap este încet în comparație cu HashMap, deoarece oferă performanța lui O(log(n)) pentru majoritatea operațiunilor precum add(), remove() și contains().
Structură de date Clasa HashMap folosește masa hash . TreeMap utilizează intern a Roșu-Negru arbore, care este un arbore de căutare binar cu auto-echilibrare.
Metoda de comparare Folosește este egal() metoda de Obiect clasă pentru a compara cheile. Metoda equals() a clasei Map o înlocuiește. Acesta folosește compara cu() metoda de comparare a cheilor.
Funcționalitate Clasa HashMap conține doar funcții de bază, cum ar fi get(), put(), KeySet() , etc. Clasa TreeMap este bogată în funcționalități, deoarece conține funcții precum: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Ordinea elementelor HashMap nu menține nicio ordine. Elementele sunt sortate în ordinea naturală (ascendent).
Utilizări HashMap ar trebui să fie folosit atunci când nu avem nevoie de pereche cheie-valoare în ordine sortată. TreeMap ar trebui folosit atunci când avem nevoie de pereche cheie-valoare în ordine sortată (crescător).

Exemplu de HashMap vs TreeMap

În exemplul următor, putem observa că elementele HashMap sunt în ordine aleatorie, în timp ce elementele TreeMap sunt aranjate în ordine crescătoare.

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

Ieșire:

Diferența dintre HashMap și TreeMap