Was ist der Unterschied zwischen Collection
und List
auf Java? Wann sollte ich welche verwenden?
Was ist der Unterschied zwischen Sammlung und Liste in Java?
Truong Ha
Joachim Sauer
Zunächst einmal: A List
ist ein Collection
. Es ist ein spezialisiertes Collection
jedoch.
EIN Collection
ist genau das: eine Sammlung von Gegenständen. Sie können Sachen hinzufügen, Sachen entfernen, Sachen iterieren und abfragen, wie viel Sachen dort drin sind.
EIN List
fügt die Informationen über eine definierte Abfolge von Sachen hinzu: Sie können das Element an Position erhalten nkönnen Sie an Position ein Element hinzufügen nkönnen Sie das Element an Position entfernen n.
In einem Collection
das geht nicht: “the 5th element in this collection” ist nicht definiert, weil es keine definierte Reihenfolge gibt.
Es gibt auch andere spezialisierte Sammlungen, zum Beispiel a Set
was die Funktion hinzufügt, dass es niemals dasselbe Element zweimal enthalten wird.
-
ja, Liste ist eine geordnete Spezialisierung der Sammlung (aber nicht sortiert) +1
– atamanroman
23. Juli 2010 um 11:09 Uhr
-
List in Java erweitert die Sammlungsschnittstelle und erstellt indizierte Funktionen, die beim positionsbasierten Abruf- und Entfernungsverhalten helfen
– reibungsfreie Riemenscheibe
23. Juli 2010 um 18:46 Uhr
krock
Collection
ist die Root-Schnittstelle zur Hierarchie der Java-Sammlungen. List
ist eine Unterschnittstelle, die eine geordnete Sammlung definiert, andere Unterschnittstellen sind es Queue
die typischerweise Elemente speichern, die zur Verarbeitung bereit sind (z Stapel).
Das folgende Diagramm zeigt die Beziehung zwischen den verschiedenen Java-Erfassungstypen:
-
Dein Bild gefällt mir wirklich, ich habe es gesehen, als ich mich auf SCJP vorbereitete, aber heutzutage fast alles über diese Dinge vergessen.
– Truong Ha
23. Juli 2010 um 10:59 Uhr
-
Ich muss zugeben, dass dieses Bild war aus diesem Blog gewildert. Auch ich habe ein solches Diagramm zuerst im Buch von K&B SCJP gesehen.
– krock
23. Juli 2010 um 11:02 Uhr
-
aus dem scjp cert kann man viel lernen, die meisten bücher zu diesem thema sind super 🙂
– atamanroman
23. Juli 2010 um 11:07 Uhr
-
ich vermute
Map
ist keinCollection
.– Giannis Christofakis
28. August 2016 um 14:27 Uhr
Java API ist die beste Antwort darauf
Sammlung
Die Stammschnittstelle in der Sammlungshierarchie. Eine Sammlung stellt eine Gruppe von Objekten dar, die als ihre Elemente bezeichnet werden. Einige Sammlungen erlauben doppelte Elemente und andere nicht. Einige sind geordnet 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 herumzureichen und sie zu manipulieren, wenn maximale Allgemeingültigkeit erwünscht ist.
Aufführen (erweitert Sammlung)
Eine geordnete Sammlung (auch als Sequenz bezeichnet). Der Benutzer dieser Schnittstelle hat genaue Kontrolle darüber, wo in der Liste jedes Element eingefügt wird. Der Benutzer kann auf Elemente über ihren ganzzahligen Index (Position in der Liste) zugreifen und nach Elementen in der Liste suchen.
Im Gegensatz zu Mengen lassen Listen normalerweise doppelte Elemente zu. Formaler erlauben Listen normalerweise Paare von Elementen e1 und e2, so dass e1.equals(e2), und sie erlauben normalerweise 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, aber wir gehen davon aus, dass diese Verwendung selten ist.
List und Set sind zwei Unterklassen von Collection.
In der Liste sind die Daten in einer bestimmten Reihenfolge.
In Set dürfen dieselben Daten nicht zweimal enthalten sein.
In Collection speichert es nur Daten ohne bestimmte Reihenfolge und kann doppelte Daten enthalten.
Sammlung ist die Super-Schnittstelle von List, sodass jede Java-Liste auch eine Instanz der Sammlung ist. Sammlungen sind nur sequentiell (und in keiner bestimmten Reihenfolge) iterierbar, während eine Liste den Zugriff auf ein Element an einer bestimmten Position über die ermöglicht get(int index)
Methode.
Ramja
Collection ist die Hauptschnittstelle der Java Collections-Hierarchie und List(Sequence) ist eine der Unterschnittstellen, die eine geordnete Sammlung definieren.
Gian
Sammlung ist eine High-Level-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. Aufführen ist speziell ein bestellt Sammlung von Objekten. Wenn Sie Objekte in einer bestimmten Reihenfolge in eine Liste einfügen, bleiben sie in dieser Reihenfolge.
Und die Entscheidung, wo diese beiden Schnittstellen verwendet werden sollen, ist viel weniger wichtig als die Entscheidung, welche konkrete Implementierung Sie verwenden. Dies wirkt sich auf die zeitliche und räumliche Leistung Ihres Programms aus. Wenn Sie beispielsweise eine Liste wünschen, können Sie eine ArrayList oder eine LinkedList verwenden, die jeweils Auswirkungen auf die Anwendung haben. Für andere Sammlungstypen (z. B. Sets) gelten ähnliche Überlegungen.
öffentliche Schnittstelle Liste erweitert Collection { }
– rai.skumar
26. Dezember 2012 um 10:21 Uhr