Was ist der Unterschied zwischen Collection
und List
in Java? Wann soll ich welche verwenden?
java
collections
Truong Ha
quelle
quelle
Antworten:
Zunächst einmal: a
List
ist aCollection
. Es ist jedoch eine spezialisierteCollection
.A
Collection
ist genau das: eine Sammlung von Gegenständen. Sie können Dinge hinzufügen, Dinge entfernen, über Dinge iterieren und abfragen, wie viel Zeug darin ist.A
List
fügt die Informationen zu einer definierten Folge von Dingen hinzu: Sie können das Element an Position n erhalten , Sie können ein Element an Position n hinzufügen , Sie können das Element an Position n entfernen .In a können
Collection
Sie das nicht tun: "Das 5. Element in dieser Sammlung" ist nicht definiert, da es keine definierte Reihenfolge gibt.Es gibt auch andere spezialisierte Sammlungen, zum Beispiel eine,
Set
die die Funktion hinzufügt, dass sie niemals zweimal dasselbe Element enthält.quelle
Collection
ist die Root-Schnittstelle zur Hierarchie der Java-Sammlungen.List
ist eine Unterschnittstelle, die eine geordnete Sammlung definiert, andere Unterschnittstellen,Queue
die typischerweise Elemente speichern, die zur Verarbeitung bereit sind (z . B. Stapel ).Das folgende Diagramm zeigt die Beziehung zwischen den verschiedenen Java-Sammlungstypen:
quelle
Map
ist nicht einCollection
.Java API ist die beste Antwort darauf
Sammlung
Liste (erweitert Sammlung)
quelle
Liste und Satz sind zwei Unterklassen der Sammlung.
In List sind die Daten in einer bestimmten Reihenfolge.
In Set kann es nicht zweimal dieselben Daten enthalten.
In Collection werden nur Daten ohne bestimmte Reihenfolge gespeichert und können doppelte Daten enthalten.
quelle
Collection ist eine übergeordnete Schnittstelle, die Java-Objekte beschreibt, die Sammlungen anderer Objekte enthalten können. Es ist nicht sehr spezifisch, wie auf sie zugegriffen wird, ob mehrere Kopien desselben Objekts in derselben Sammlung vorhanden sein können oder ob die Reihenfolge wichtig ist. Liste ist speziell eine geordnete Sammlung von Objekten. Wenn Sie Objekte in einer bestimmten Reihenfolge in eine Liste einfügen, bleiben sie in dieser Reihenfolge.
Die Entscheidung, wo diese beiden Schnittstellen verwendet werden sollen, ist viel weniger wichtig als die Entscheidung, welche konkrete Implementierung Sie verwenden. Dies hat Auswirkungen auf die zeitliche und räumliche Leistung Ihres Programms. Wenn Sie beispielsweise eine Liste wünschen, können Sie eine ArrayList oder eine LinkedList verwenden, von denen jede Auswirkungen auf die Anwendung hat. Für andere Sammlungstypen (z. B. Sets) gelten ähnliche Überlegungen.
quelle
Collection ist die Super-Schnittstelle von List, sodass jede Java-Liste auch eine Instanz von Collection ist. Sammlungen können nur nacheinander (und in keiner bestimmten Reihenfolge) iteriert werden, während eine Liste über die
get(int index)
Methode den Zugriff auf ein Element an einer bestimmten Position ermöglicht .quelle
Sammlung ist die Hauptschnittstelle der Java-Sammlungshierarchie und Liste (Sequenz) ist eine der Unterschnittstellen, die eine geordnete Sammlung definiert.
quelle