Die HashSet-Klasse ist Teil des Java Collections Framework und stellt eine schnelle, ungeordnete Sammlung bereit, die keine doppelten Elemente zulässt. Es baut auf der HashMap auf, was bedeutet, dass es die gleichen zeitlichen Komplexitätsvorteile erbt, sich aber ausschließlich auf die Einzigartigkeit der Elemente konzentriert. In diesem Artikel untersuchen wir, wie HashSet funktioniert, was es einzigartig macht und warum es sich von anderen Sammlungen unterscheidet.
Ein HashSet ist:
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); // Parameterized constructor using a collection Set setWithCollection = new HashSet(Arrays.asList(4, 4, 3)); // Default constructor with default capacity 16 Set set = new HashSet();
set.add(1); set.add(2); set.add(1); // Duplicate value is ignored System.out.println(set); // Output -> [1, 2]
Wenn Sie doppelte Werte ersetzen müssen, anstatt sie zu ignorieren, ist HashSet nicht die richtige Wahl. Dies liegt daran, dass die Einzigartigkeit von Elementen priorisiert wird.
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); System.out.println(setWithInitialCapacity.size()); // Output -> 0
Auch wenn die Kapazität von setWithInitialCapacity 5 beträgt, ist die Größe 0, da die Größe die Anzahl der im Satz vorhandenen Elemente widerspiegelt, nicht die anfängliche Kapazität. Sie können sich Kapazität als den internen Speicherplatz vorstellen, der sich anpasst, wenn Elemente hinzugefügt werden.
// Parameterized constructor using a collection SetsetWithCollection = new HashSet(Arrays.asList(4, 4, 3)); System.out.println(setWithCollection); // Output -> [3, 4] or [4, 3]
Wenn Sie sortierte Elemente beibehalten müssen, sollten Sie die Verwendung eines TreeSet in Betracht ziehen, das sicherstellt, dass Elemente in aufsteigender Reihenfolge angeordnet werden.
In Interviews wird häufig gefragt, ob Sie einen Index eines Elements in einem HashSet abrufen können. Die Antwort ist Nein, da HashSet einen Hashing-Mechanismus zum Speichern von Elementen verwendet, keine indexbasierte Struktur wie eine Liste oder ein Array.
Da HashSet von einer HashMap unterstützt wird, verwendet es die Schlüssel der Karte zum Speichern von Elementen, während die Werte irrelevant sind. Aus diesem Grund muss jedes Element in einem HashSet eindeutig sein, genau wie die Schlüssel in einer HashMap.
HashSet ist ein leistungsstarkes Tool, wenn Sie eine schnelle, ungeordnete Sammlung benötigen, die Duplikate vermeidet. Während es für die meisten Vorgänge eine O(1) Zeitkomplexität bietet, fehlen ihm Funktionen wie Sortieren und Indizieren. Für Entwickler hilft das Wissen, wie HashSet mit HashMap zusammenhängt, das Innenleben zu verstehen und das Sammlungs-Framework besser zu nutzen.
Im nächsten Beitrag gehen wir einer häufig gestellten Frage im Vorstellungsgespräch nach, die in Vorstellungsgesprächen häufig gestellt wird, um das Wissen der Kandidaten über Inkassokonzepte zu testen.
Java-Grundlagen
Array Interview Essentials
Java Memory Essentials
Viel Spaß beim Codieren!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3