Unterschied zwischen HashSet und HashMap

In diesem Artikel werden wir die Unterschiede zwischen den Klassen HashSet und HashMap diskutieren.

HashSet vs HashMap

Unterschiede:

HashSet HashMap
Die HashSet-Klasse implementiert die Set-Schnittstelle Die HashMap-Klasse implementiert die Map-Schnittstelle
In HashSet speichern wir Objekte (Elemente oder Werte) z.Wenn wir z. B. ein HashSet mit String-Elementen haben, dann könnte es eine Menge von HashSet-Elementen darstellen: {„Hallo“, „Hi“, „Bye“, „Run“} HashMap wird zum Speichern von Schlüssel-&Wertepaaren verwendet. Kurz gesagt verwaltet sie die Zuordnung von Schlüssel & Wert (Die Klasse HashMap entspricht in etwa Hashtable, nur dass sie unsynchronisiert ist und Nullen erlaubt). So könnte man HashMap-Elemente darstellen, wenn sie einen ganzzahligen Schlüssel und einen Wert vom Typ String haben: z.B. {1->“Hello“, 2->“Hi“, 3->“Bye“, 4->“Run“}
HashSet erlaubt keine doppelten Elemente, d.h. man kann keine doppelten Werte in HashSet speichern. HashMap erlaubt keine doppelten Schlüssel, aber sie erlaubt doppelte Werte.
HashSet erlaubt einen einzelnen Null-Wert. HashMap erlaubt einen einzelnen Null-Schlüssel und eine beliebige Anzahl von Null-Werten.

Ähnlichkeiten:
1) Sowohl HashMap als auch HashSet sind nicht synchronisiert, was bedeutet, dass sie nicht für thread-sichere Operationen geeignet sind, es sei denn, sie werden explizit synchronisiert. So kann man sie explizit synchronisieren:
HashSet:

Set s = Collections.synchronizedSet(new HashSet(...));

HashMap:

 Map m = Collections.synchronizedMap(new HashMap(...));

2) Beide Klassen garantieren nicht, dass die Reihenfolge ihrer Elemente im Laufe der Zeit konstant bleibt.

3) Wenn man sich den Quellcode von HashSet ansieht, kann man feststellen, dass er von einer HashMap unterstützt wird. Es verwendet also intern eine HashMap für alle seine Operationen.

4) Beide bieten eine konstante Zeitleistung für grundlegende Operationen wie das Hinzufügen, Entfernen von Elementen usw.

HashSet Beispiel

import java.util.HashSet;class HashSetDemo{ public static void main(String args) { // Create a HashSet HashSet<String> hset = new HashSet<String>(); //add elements to HashSet hset.add("AA"); hset.add("BB"); hset.add("CC"); hset.add("DD"); // Displaying HashSet elements System.out.println("HashSet contains: "); for(String temp : hset){ System.out.println(temp); } }}

Output:

HashSet contains: AABBCCDD

HashMap Beispiel

import java.util.HashMap;class HashMapDemo{ public static void main(String args) { // Create a HashMap HashMap<Integer, String> hmap = new HashMap<Integer, String>(); //add elements to HashMap hmap.put(1, "AA"); hmap.put(2, "BB"); hmap.put(3, "CC"); hmap.put(4, "DD"); // Displaying HashMap elements System.out.println("HashMap contains: "+hmap); }}

Output:

HashMap contains: {1=AA, 2=BB, 3=CC, 4=DD}

Leave a Reply