1. Container und Sammlungen
Container oder Sammlungen sind Klassen, mit denen Sie mehrere Objekte gleichzeitig speichern und verarbeiten können. Sie kennen bereits zwei Arten von Containern: Arrays und Listen.
Java verfügt über mehrere Dutzend Sammlungen, von denen jede Elemente auf ihre eigene Art speichert. Hier sind einige davon:
Sammlung | Klasse | Beschreibung |
---|---|---|
|
|
Aufführen |
|
Verlinkte Liste | |
|
Vektor | |
|
Stapel | |
|
|
Satz |
|
||
|
||
|
|
Warteschlange |
|
||
|
|
Karte/Wörterbuch |
|
||
|
Die Namen sind hier etwas mehrdeutig. In den meisten Programmiersprachen werden alle diese Datenstrukturen Sammlungen genannt, in Java jedoch nicht. In Java implementieren einige dieser Klassen die Collection
Schnittstelle, andere nicht.
Dementsprechend werden Sammlungen in Sammlungen im weiteren Sinne und Sammlungen im engeren Sinne (nur solche, die die Collection
Schnittstelle implementieren) unterteilt.
Um Verwirrung zu vermeiden, meinen wir, wenn wir von Sammlungen sprechen , im engeren Sinne des Wortes, also Klassen, die die Collection
Schnittstelle implementieren. Die Typen List
, Set
und Queue
sind alle Sammlungen. Sammlungen im weiteren Sinne werden im Allgemeinen als Container bezeichnet . Dazu gehören Typen wie Map
und Arrays.
2. HashSet
Sammlung
Die HashSet
Klasse ist eine typische Set-Sammlung. In vielerlei Hinsicht ähnelt es der ArrayList
Klasse. In mancher Hinsicht handelt es sich um eine primitivere Version.
Sie können ein HashSet
Objekt mit einer Anweisung wie der folgenden erstellen:
HashSet<Type> name = new HashSet<Type>();
Wo Type
ist der Typ der Elemente, die wir in der HashSet
Sammlung speichern werden?
Die HashSet
Klasse verfügt über Methoden wie diese:
Methode | Beschreibung |
---|---|
|
Fügt das value Element der Sammlung hinzu |
|
Entfernt das value Element aus der Sammlung. Gibt zurück true , wenn ein solches Element vorhanden war |
|
value Überprüft, ob die Sammlung ein Element enthält |
|
Löscht die Sammlung und entfernt alle Elemente |
|
Gibt die Anzahl der Elemente in der Sammlung zurück |
Hier ist ein Beispiel für die Verwendung eines Sets.
Schreiben wir ein Programm, das sich vom Benutzer verabschiedet, wenn er oder sie Hallo sagt. Um es interessanter zu machen, geben wir unserem Programm die Möglichkeit, „Hallo“ in mehreren Sprachen zu verstehen.
Code | Notiz |
---|---|
|
Erstellen Sie ein HashSet Objekt, das Elemente speichert String . Wir fügen der Variablen Begrüßungen in verschiedenen Sprachen hinzu set . Lesen Sie eine Zeile von der Konsole. Wenn die Zeichenfolge in unserem Grußsatz enthalten ist, verabschieden wir uns. |
3. Einstellen
Die Set
Sammlung ist für die Aufnahme einer Reihe von Elementen konzipiert. Deshalb heißt es a Set
(set). Diese Sammlung verfügt über drei Funktionen.
Operationen an einer Menge
Mit einer Menge können Sie nur drei Dinge tun: Elemente zur Menge hinzufügen, Elemente aus der Menge entfernen und prüfen, ob die Menge ein bestimmtes Element enthält. Das ist es.
Keine Bestellung
Elemente in dieser Sammlung haben keine Indizes. Sie können ein Element nicht über einen Index abrufen oder einen Wert in eine Sammlung an einem bestimmten Index schreiben. Eine Menge hat keine get()
und set()
Methoden.
Einzigartige Elemente
Alle Elemente in einem Set sind einzigartig. Im Gegensatz zu einer Liste kann eine Menge nur eine Instanz eines Elements enthalten. Ein Objekt ist entweder in der Menge enthalten oder nicht – es gibt keine dritte Option. Sie können Schwarz nicht dreimal zu einer Farbpalette hinzufügen. Entweder ist es da oder es ist nicht da.
Elemente finden
Wenn Sie ein neues Element hinzufügen, ein Element entfernen oder überprüfen, ob ein Element in einer Menge vorhanden ist, wird in der Methode eine Suche nach dem Element durchgeführt. Das übergebene Element wird zuerst von mit den Elementen der Sammlung verglichen hashCode()
, und dann, wenn die von zurückgegebenen Werte übereinstimmen hashCode()
, von equals()
.
4. Sammlungen vergleichen: List
vsSet
Vergleichen wir zwei Arten von Sammlungen: List
und Set
Wir betrachten die Hauptunterschiede, wenn eine vorteilhafter ist als die andere und umgekehrt.
Versuchen wir, List und Set am Beispiel von Spielzeug zu vergleichen.
Die List
(Listen-)Sammlung ist wie eine Reihe von Spielzeugen, die in einem Spielzimmer an der Wand angeordnet sind. Am Ende der Liste können Sie ein Spielzeug hinzufügen. Wenn es wirklich nötig ist, können Sie es auch in der Mitte einsetzen (einige der vorhandenen Spielsachen müssen dann allerdings verschoben werden).
Jedes Spielzeug hat einen Index. Sie können ein Spielzeug über seinen Index referenzieren und auch Spielzeug Nummer 7 durch Spielzeug Nummer 13 ersetzen. Sie können Spielzeug Nummer 4 aus der Liste entfernen. Schließlich können Sie den Index jedes Spielzeugs in der Liste erfahren.
Die Set
(Set-)Sammlung gleicht eher einem Stapel Spielzeug in der Mitte des Bodens. Sie können ein Spielzeug zum Stapel hinzufügen und ein Spielzeug vom Stapel entfernen. Diesen Spielzeugen ist jedoch kein fester Index zugeordnet.
Oder nehmen Sie an, Sie suchen sich ein Spielzeug für den Geburtstag Ihres Kindes aus. Überlegen Sie zunächst, ob er das Spielzeug bereits hat. Alle Spielzeuge, die er bereits hat, bilden eine Reihe von Spielzeugen, die Sie nicht kaufen möchten.
Aus dieser Sicht können Sie sehen, dass die Reihenfolge der Spielzeuge in einer Reihe von „bereits vorhandenen Spielzeugen“ keine Rolle spielt, und es spielt auch keine Rolle, ob das Geburtstagskind zwei Instanzen eines bestimmten Spielzeugs hat. Die Reihenfolge oder Anzahl der einzelnen Spielzeuge interessiert Sie nicht. Was Ihnen wichtig ist, ist, jedes einzigartige Spielzeug zu kennen, das im Set vorhanden ist.
Für solche Fälle benötigen Sie die Set
Sammlung. Die beliebteste Implementierung ist die HashSet
Klasse.
GO TO FULL VERSION