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:
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: