Antworten:
Zunächst einmal: a List
ist a Collection
. Es ist jedoch eine spezialisierte Collection
.
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.
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:
Map
ist nicht ein Collection
.
Java API ist die beste Antwort darauf
Sammlung
Die Stammschnittstelle in der Sammlungshierarchie. Eine Sammlung repräsentiert eine Gruppe von Objekten, die als ihre Elemente bezeichnet werden. Einige Sammlungen erlauben doppelte Elemente, andere nicht. Einige sind bestellt und andere ungeordnet. Das JDK bietet keine direkten Implementierungen dieser Schnittstelle: Es bietet Implementierungen spezifischerer Subschnittstellen wie Set und List. Diese Schnittstelle wird normalerweise verwendet, um Sammlungen weiterzugeben und dort zu bearbeiten, wo maximale Allgemeinheit gewünscht wird.
Liste (erweitert Sammlung)
Eine bestellte Sammlung (auch als Sequenz bekannt). Der Benutzer dieser Schnittstelle hat eine genaue Kontrolle darüber, wo in der Liste jedes Element eingefügt wird. Der Benutzer kann über seinen ganzzahligen Index (Position in der Liste) auf Elemente zugreifen und nach Elementen in der Liste suchen.
Im Gegensatz zu Sets erlauben Listen normalerweise doppelte Elemente. Formalerweise erlauben Listen typischerweise Paare von Elementen e1 und e2, so dass e1.equals (e2), und sie erlauben typischerweise mehrere Nullelemente, wenn sie überhaupt Nullelemente zulassen. Es ist nicht unvorstellbar, dass jemand eine Liste implementieren möchte, die Duplikate verbietet, indem er Laufzeitausnahmen auslöst, wenn der Benutzer versucht, sie einzufügen. Wir erwarten jedoch, dass diese Verwendung selten ist.
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.
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.
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 .