Der HashMap Und HashSet in Java sind die beliebtesten Collection-Klassen. Beide werden für die Datenstruktur verwendet. Die folgende Tabelle beschreibt den Unterschied zwischen HashMap und HashSet:
Basis | HashMap | HashSet |
---|---|---|
Definition | Java HashMap ist eine Hash-Tabellen-basierte Implementierung der Map-Schnittstelle. | HashSet ist ein Set. Es erstellt eine Sammlung, die eine Hash-Tabelle zur Speicherung verwendet. |
Implementierung | HashMap implementiert Zuordnen, klonbar und serialisierbar Schnittstelle es. | HashSet implementiert Festgelegt, klonbar, serialisierbar, iterierbar Und Sammlung Schnittstellen. |
Shops | In HashMap speichern wir a Schlüssel-Wert-Paar . Es verwaltet die Zuordnung von Schlüssel und Wert. | In HashSet speichern wir Objekte . |
Doppelte Werte | Es erlaubt nicht Doppelte Schlüssel , Aber doppelte Werte Sind erlaubt . | Es erlaubt nicht doppelte Werte . |
Nullwerte | Es kann enthalten: einzelner Nullschlüssel Und mehrere Nullwerte . | Es kann enthalten ein einzelner Nullwert . |
Einfügungsmethode | HashMap verwendet die setzen() Methode zum Hinzufügen der Elemente in der HashMap. | HashSet verwendet die hinzufügen() Methode zum Hinzufügen von Elementen im HashSet. |
Leistung | HashMap ist Schneller/ als HashSet, da Werte einem eindeutigen Schlüssel zugeordnet sind. | HashSet ist Langsamer als HashMap, da das Mitgliedsobjekt zur Berechnung des Hashcode-Werts verwendet wird, der für zwei Objekte gleich sein kann. |
Die Anzahl der Objekte | Nur eins Das Objekt wird während des Add-Vorgangs erstellt. | Es gibt zwei Objekte, die während der Put-Operation erstellt wurden, eines für Schlüssel und einer für Wert . |
Speichermechanismus | HashMap verwendet intern Hashing Gegenstände aufzubewahren. | HashSet verwendet intern a HashMap Objekt zum Speichern von Objekten. |
Verwendet | Immer lieber, wenn wir das nicht pflegen Einzigartigkeit . | Es wird verwendet, wenn wir das aufrechterhalten müssen Einzigartigkeit von Dateien. |
Beispiel | {a->4, b->9, c->5} Wo a, b, c Sind Schlüssel Und 4, 9, 5 Sind Werte mit Schlüssel verbunden. | {6, 43, 2, 90, 4} Es bezeichnet eine Menge. |
Lassen Sie uns die Unterschiede anhand von Programmen verstehen.
Beispiel für HashMap
Wenn wir im folgenden Beispiel ein doppeltes Element mit demselben Schlüssel und einem anderen Wert hinzufügen, wird der vorherige Wert des Schlüssels durch den neuen Wert ersetzt.
faktorielles Java
Wenn wir ein doppeltes Element mit demselben Schlüssel und demselben Wert hinzufügen, wird das Schlüssel-Wert-Paar nicht ein zweites Mal gespeichert.
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); } }
Ausgabe:
Beispiel für HashSet
Im folgenden Beispiel können wir sehen, dass die doppelten Werte nicht im HashSet gespeichert werden und der Nullwert nur einmal gespeichert wird.
einfaches Java-Programm
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); } }
Ausgabe: