Wir erstellen ein Set
als:
Set myset = new HashSet()
Wie erstellen wir eine List
in Java?
java
list
collections
user93796
quelle
quelle
Antworten:
oder mit Generika ( Java 7 oder höher)
oder mit Generika (alte Java-Versionen)
quelle
Wenn Sie außerdem eine Liste erstellen möchten, die Elemente enthält (obwohl die Größe festgelegt ist):
quelle
Lassen Sie mich etwas zusammenfassen und hinzufügen:
JDK
Guave
Unveränderliche Liste
Leere unveränderliche Liste
Liste der Zeichen
Liste der ganzen Zahlen
quelle
Ints.asList
erstellt keine unveränderliche Liste, sondern eine Liste mit fester Größe, die von einem bestimmten Array von Ints unterstützt wird (dh unterstützt wirdList.set(int, Object)
). Das zweite Beispiel für "Unveränderliche Liste von Zeichen" ist ebenfalls nicht unveränderlich (ich würde diese Zeile entfernen).In Java 8
So erstellen Sie eine nicht leere Liste mit fester Größe (Vorgänge wie Hinzufügen, Entfernen usw. werden nicht unterstützt):
So erstellen Sie eine nicht leere veränderbare Liste:
In Java 9
Verwenden einer neuen
List.of(...)
statischen Factory-Methode:In Java 10
Verwenden der Inferenz des lokalen Variablentyps :
Und befolgen Sie Best Practices ...
Verwenden Sie keine rohen Typen
Seit Java 5 sind Generika ein Teil der Sprache - Sie sollten sie verwenden:
Programm zu Schnittstellen
Zum Beispiel auf die
List
Schnittstelle programmieren:Anstatt:
quelle
Lesen Sie dies zuerst , dann lesen Sie dies und das . 9 mal von 10 verwenden Sie eine dieser beiden Implementierungen.
Lesen Sie einfach den Sun-Leitfaden zum Sammlungs-Framework .
quelle
ArrayList
. Wenn ich nur mit den Enden einer Liste arbeite, ist es eine Deque (oder Warteschlange) und ich verwende dieArrayDeque
Implementierung. Der Grund dafür ist, dass obwohl die Array-basierten Implementierungen möglicherweise Speicherplatz in leeren Slots verschwenden (wenn ich die erforderliche Kapazität nicht vorhersagen kann), dies für kleine Sammlungen mit dem Overhead aller Knoteninstanzen in einer verknüpften Liste vergleichbar ist ( oder deque). Und im Gegenzug bekomme ich zufälligen Zugriff. Welchen einzigartigen Vorteil bietetLinkedList
es?quelle
Seit Java 7 haben Sie eine Typinferenz für die Erstellung generischer Instanzen , sodass keine generischen Parameter auf der rechten Seite der Zuweisung dupliziert werden müssen:
Eine Liste mit fester Größe kann wie folgt definiert werden:
Für unveränderliche Listen können Sie die Guava- Bibliothek verwenden:
quelle
List ist nur eine Schnittstelle wie Set .
Wie HashSet eine Implementierung eines Sets ist, das bestimmte Eigenschaften hinsichtlich der Leistung zum Hinzufügen / Nachschlagen / Entfernen aufweist, ist ArrayList die bloße Implementierung einer Liste.
Wenn Sie sich die Dokumentation zu den jeweiligen Schnittstellen ansehen, finden Sie "Alle bekannten Implementierungsklassen" und können entscheiden, welche für Ihre Anforderungen besser geeignet ist.
Wahrscheinlich ist es ArrayList .
quelle
List
ist eine Schnittstelle wieSet
und hatArrayList
undLinkedList
als Allzweckimplementierungen .Wir können eine Liste erstellen als:
Wir können auch eine Liste mit fester Größe erstellen als:
Wir würden fast immer
ArrayList
gegen dieLinkedList
Umsetzung verwenden:LinkedList
verwendet viel Platz für Objekte und funktioniert schlecht, wenn wir viele Elemente haben.LinkedList
erfordert O (n) Zeit im Vergleich zu O (1) inArrayList
.Die Liste erstellt von
Arrays.asList
oben kann nicht strukturell geändert werden, ihre Elemente können jedoch weiterhin geändert werden.Java 8
Gemäß Dokument gibt die Methode
Collections.unmodifiableList
eine nicht veränderbare Ansicht der angegebenen Liste zurück. Wir können es bekommen wie:Java 9
Wenn wir Java 9 verwenden, dann:
Java 10
Wenn wir uns in Java 10 befinden, gibt die Methode
Collectors.unmodifiableList
eine in Java 9 eingeführte Instanz einer wirklich nicht veränderbaren Liste zurück. Weitere Informationen zum Unterschied zwischen vs in Java 10 finden Sie in dieser Antwort .Collections.unmodifiableList
Collectors.unmodifiableList
quelle
Manchmal - aber nur sehr selten - möchten Sie möglicherweise anstelle einer neuen ArrayList eine neue LinkedList. Beginnen Sie mit ArrayList. Wenn Sie Leistungsprobleme haben und nachweisen, dass die Liste das Problem ist, und wenn Sie dieser Liste viel hinzufügen und löschen, wechseln Sie - nicht vorher - zu einer LinkedList und prüfen Sie, ob sich die Situation verbessert. Aber im Wesentlichen bleiben Sie bei ArrayList und alles wird gut.
quelle
Oder mit Generika
Sie können Zeichenfolgen natürlich auch durch beliebige Variablentypen wie Integer ersetzen.
quelle
Ein Beispiel:
Sie können im Javadoc nach List suchen und alle bekannten Implementierungsklassen der
List
Schnittstelle finden, die in der Java-API enthalten sind.quelle
Mit Google Collections können Sie die folgenden Methoden in der Lists- Klasse verwenden
Es gibt Überladungen für die Varargs-Initialisierung und -Initialisierung von a
Iterable<T>
.Der Vorteil dieser Methoden besteht darin, dass Sie den generischen Parameter nicht explizit wie beim Konstruktor angeben müssen - der Compiler leitet ihn aus dem Typ der Variablen ab.
quelle
Sie müssen importieren
List
undArrayList
.quelle
Mehr Optionen, um dasselbe mit Java 8 zu tun, nicht besser, nicht schlechter, nur anders. Wenn Sie zusätzliche Arbeit mit den Listen leisten möchten, bietet Streams Ihnen mehr Alternativen (Filtern, Zuordnen, Reduzieren usw.).
quelle
Mit Java 9 können Sie Folgendes tun, um eine unveränderliche zu erstellen
List
:quelle
Optional können Sie hier die doppelte Klammerinitialisierung verwenden:
quelle
Es gibt viele Möglichkeiten, ein Set und eine Liste zu erstellen. HashSet und ArrayList sind nur zwei Beispiele. Es ist heutzutage auch ziemlich üblich, Generika mit Sammlungen zu verwenden. Ich schlage vor, Sie schauen sich an, was sie sind
Dies ist eine gute Einführung in die integrierten Sammlungen von Java. http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
quelle
Es ist besser, wenn Sie Generika verwenden, wie unten vorgeschlagen:
Wenn Sie LinkedList verwenden.
quelle
Mit Eclipse-Sammlungen können Sie eine Liste wie folgt erstellen:
Wenn Sie eine unveränderliche Liste wollen:
Sie können das automatische Boxen vermeiden, indem Sie primitive Listen verwenden. So erstellen Sie Int-Listen:
Es gibt Varianten für alle 8 Grundelemente.
Hinweis: Ich bin ein Committer für Eclipse-Sammlungen.
quelle
Im Folgenden finden Sie einige Möglichkeiten, wie Sie Listen erstellen können.
Dadurch wird eine Liste mit fester Größe erstellt. Das Hinzufügen / Entfernen von Elementen ist nicht möglich.
java.lang.UnsupportedOperationException
Wenn Sie dies versuchen, wird eine Liste ausgelöst .Die folgende Version ist eine einfache Liste, in der Sie eine beliebige Anzahl von Elementen hinzufügen / entfernen können.
So erstellen Sie ein
LinkedList
in Java. Wenn Sie häufig Elemente in die Liste einfügen / löschen müssen, sollten SieLinkedList
stattdessen verwendenArrayList
quelle
Arrays.asList("Male", "Female")
.Versuche dies:
Oder:
quelle
Wenn Sie eine serialisierbare, unveränderliche Liste mit einer einzelnen Entität benötigen, können Sie Folgendes verwenden:
quelle
Als Deklaration der Array-Liste in Java gilt
Es gibt zahlreiche Möglichkeiten, Array-Listen in Java zu erstellen und zu initialisieren.
quelle