Wenn Sie den Check - API für List
Sie feststellen heißt es:
Interface List<E>
Ein interface
Mittel zu sein, kann nicht instanziiert werden (neinnew List()
ist möglich).
Wenn Sie diesen Link überprüfen, finden Sie einige class
es, die implementieren List
:
Alle bekannten Implementierungsklassen:
AbstractList
, AbstractSequentialList
, ArrayList
, AttributeList
, CopyOnWriteArrayList
, LinkedList
, RoleList
, RoleUnresolvedList
, Stack
,Vector
Diese können instanziiert werden. Verwenden Sie ihre Links, um mehr über sie zu erfahren, IE: um zu wissen, welche besser zu Ihren Anforderungen passt.
Die 3 am häufigsten verwendeten sind wahrscheinlich:
List<String> supplierNames1 = new ArrayList<String>();
List<String> supplierNames2 = new LinkedList<String>();
List<String> supplierNames3 = new Vector<String>();
Bonus:
Sie können es auch auf einfachere Weise mit Werten instanziieren, indem Sie Arrays
class
Folgendes verwenden:
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));
Beachten Sie jedoch, dass Sie dieser Liste keine weiteren Elemente hinzufügen dürfen fixed-size
.
int[] a = {1,2,3}; System.out.println(Arrays.asList(a)); // [[I@70cdd2]
ArrayList
, verwenden Sienew ArrayList<>(Arrays.asList("sup1", "sup2", "sup3"))
Eine Schnittstelle kann nicht instanziiert werden, es gibt jedoch nur wenige Implementierungen:
JDK2
JDK7
JDK8
JDK9
Außerdem gibt es viele andere Möglichkeiten, die von anderen Bibliotheken wie Guava bereitgestellt werden .
quelle
Liste ist eine Schnittstelle , Sie können eine Schnittstelle nicht instanziieren, da Schnittstelle eine Konvention ist, welche Methoden Ihre Klassen haben sollten. Zum Instanziieren benötigen Sie einige Realisierungen (Implementierungen) dieser Schnittstelle. Probieren Sie den folgenden Code mit sehr beliebten Implementierungen der List-Schnittstelle aus:
oder
quelle
Sie müssen
ArrayList<String>
oder so verwenden.List<String>
ist eine Schnittstelle.Benutze das:
quelle
List ist eine Schnittstelle, und Sie können eine Schnittstelle nicht initialisieren. Instanziieren Sie stattdessen eine implementierende Klasse.
Mögen:
quelle
Liste ist nur eine Schnittstelle, eine Definition einer generischen Liste. Sie müssen eine Implementierung dieser Listenschnittstelle bereitstellen. Zwei am häufigsten sind:
ArrayList - Eine Liste, die über ein Array implementiert ist
LinkedList - eine Liste, die wie eine miteinander verbundene Kette von Elementen implementiert ist
quelle
In den meisten Fällen möchten Sie einfach
ArrayList
- eine Implementierung vonList
Vor JDK Version 7
JDK 7 und höher können Sie den Diamantoperator verwenden
Weitere Informationen finden Sie hier Oracle-Dokumentation - Sammlungen
quelle
Je nachdem, welche Art von Liste Sie verwenden möchten, so etwas wie
sollte dich zum Laufen bringen.
List ist die Schnittstelle, ArrayList ist eine Implementierung der List-Schnittstelle. Weitere Implementierungen, die möglicherweise Ihren Anforderungen besser entsprechen, finden Sie in den JavaDocs der List-Oberfläche .
quelle
Wenn Sie nur eine unveränderliche Datei
List<T>
mit nur einem Objekt erstellen möchten , können Sie diese API verwenden:Weitere Infos: docs
quelle
Liste ist eine Schnittstelle. Sie können List nicht zum Initialisieren verwenden.
Dies sind einige der Klassen mit Listenelementen.
Sie können dies gemäß Ihren Anforderungen verwenden. Diese Klassen haben jeweils ihre eigenen Funktionen.
quelle
Nur für den Fall, dass sich noch jemand mit dieser Frage beschäftigt. Weil ich sehe, dass ein oder zwei neue Benutzer wieder dieselbe Frage stellen und alle dann sagen: Nein, das können Sie nicht, liebe Klugheit . Abgesehen von all den hier gegebenen Antworten möchte ich zusätzliche Informationen bereitstellen - ja, das können Sie tatsächlich do, List list = new List (); Aber auf Kosten des Schreibens Implementierungen aller Methoden von Schnittstellen. Der Begriff ist nicht einfach List list = new List (); aber
..... und so weiter (Kann nicht alle Methoden schreiben.)
Dies ist ein Beispiel für eine anonyme Klasse . Es ist richtig, wenn jemand sagt: Nein, Sie können eine Schnittstelle nicht instanziieren, und das ist richtig. Aber Sie können nie sagen, Sie können nicht schreiben List list = new List (); Aber offensichtlich können Sie das tun, und das ist eine schwierige Aussage, die Sie nicht machen können .
quelle
List
. Vielmehr deklariert es eine neue Klasse, die keinen Namen hat und implementiertList
, und erstellt zur Laufzeit ein neues Objekt der neu deklarierten Klasse.Wir haben Sojus-To erstellt , um 1 Problem zu vereinfachen: Konvertieren
X
inY
(z . B.String
inInteger
). Konstruieren eines Objekts wird auch Art der Umwandlung so ist es eine einfache Funktion zu konstruieren hatMap
,List
,Set
:Bitte überprüfen Sie es - es hat viele andere nützliche Funktionen
quelle