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