logo

Diferența dintre clasa HashSet și HashMap în Java

The HashMap și HashSet în Java sunt cele mai populare clase de colecție. Ambele sunt folosite pentru structura datelor. Următorul tabel descrie diferența dintre HashMap și HashSet:

Bază HashMap HashSet
Definiție Java HashMap este o implementare bazată pe tabel hash a interfeței Map. HashSet este un set. Creează o colecție care folosește un tabel hash pentru stocare.
Implementarea Implementări HashMap Hartă, clonabil și serializabil interfață es. Implementări HashSet Set, Clonabil, Serializabil, Iterabil și Colectie interfețe.
Magazine În HashMap stocăm un pereche cheie-valoare . Menține maparea cheii și valorii. În HashSet, stocăm obiecte .
Valori duplicate Nu permite chei duplicate , dar valori duplicate sunt permis . Nu permite valori duplicate .
Valori nule Poate conține a o singură cheie nulă și mai multe valori nule . Poate contine o singură valoare nulă .
Metoda de inserare HashMap folosește a pune() metoda de a adăuga elementele în HashMap. HashSet folosește adăuga() metoda de a adăuga elemente în HashSet.
Performanţă HashMap este Mai repede/ decât HashSet, deoarece valorile sunt asociate cu o cheie unică. HashSet este Mai lent decât HashMap, deoarece obiectul membru este utilizat pentru calcularea valorii hashcode, care poate fi aceeași pentru două obiecte.
Numărul de obiecte Numai unu obiectul este creat în timpul operației de adăugare. Sunt Două obiecte create în timpul operațiunii de punere, unul pentru cheie si unul pentru valoare .
Mecanism de stocare HashMap utilizează intern hashing pentru a depozita obiecte. HashSet utilizează intern a HashMap obiect pentru a stoca obiecte.
Utilizări Preferă întotdeauna când nu menținem unicitatea . Este folosit atunci când trebuie să întreținem unicitatea de date.
Exemplu {a->4, b->9, c->5} Unde a, b, c sunt chei și 4, 9, 5 sunt valorile asociat cu cheia. {6, 43, 2, 90, 4} Denotă un set.

Să înțelegem diferențele prin programe.

Exemplu de HashMap

În exemplul următor, când adăugăm un element duplicat cu aceeași cheie și valoare diferită, atunci valoarea anterioară a cheii este înlocuită cu noua valoare.

Când adăugăm un element duplicat cu aceeași cheie și aceeași valoare, atunci perechea cheie-valoare nu se stochează a doua oară.

 import java.util.*; public class HashMapExample { public static void main(String args[]) { //creating object of HashMap HashMap hm= new HashMap(); //adding key-value pair hm.put('John', 23); hm.put('Monty', 27 ); hm.put('Richard', 21); hm.put('Devid', 19); System.out.println('Before adding duplicate keys: '); System.out.println(hm); //adding duplicate keys hm.put('Monty', 25); //replace the Monty's previous age hm.put('Devid', 19); System.out.println('After adding duplicate keys: '); System.out.println(hm); } } 

Ieșire:

Diferența dintre clasa HashSet și HashMap în Java

Exemplu de HashSet

În exemplul următor, putem vedea că valorile duplicate nu se stochează în HashSet, iar valoarea nulă se stochează o singură dată.

 import java.util.*; public class HashSetExample { public static void main(String args[]) { //creating object of HashSet HashSet hs= new HashSet(); //adding values to HashSet hs.add('Java'); hs.add('Python'); hs.add('C++'); hs.add('C'); System.out.println('Before adding duplicate and null values: '); System.out.println(hs); //adding duplicate values hs.add('Python'); hs.add('C'); System.out.println('After adding duplicate values: '); System.out.println(hs); //adding null values hs.add(null); hs.add(null); System.out.println('After adding null values: '); System.out.println(hs); } } 

Ieșire:

Diferența dintre clasa HashSet și HashMap în Java