Looking for java Keywords? Try Ask4Keywords

Java LanguageSammlungen


Einführung

Das Collections-Framework in java.util bietet eine Reihe generischer Klassen für Datensätze mit Funktionen, die von regulären Arrays nicht bereitgestellt werden können.

Collections Framework enthält Schnittstellen für Collection<O> mit den Haupt-Subschnittstellen List<O> und Set<O> und der Mapping-Collection Map<K,V> . Collections sind die Root-Schnittstelle und werden von vielen anderen Collection-Frameworks implementiert.

Bemerkungen

Sammlungen sind Objekte, in denen Sammlungen anderer Objekte gespeichert werden können. Sie können den Typ der in einer Sammlung gespeicherten Daten mit Generics angeben.

Sammlungen verwenden im Allgemeinen die Namespaces java.util oder java.util.concurrent .

Java SE 1.4

Java 1.4.2 und folgende unterstützen keine Generics. Daher können Sie nicht die Typparameter angeben, die eine Auflistung enthält. Abgesehen von der Typensicherheit müssen Sie auch Casts verwenden, um den korrekten Typ aus einer Sammlung zurückzuholen.

Neben Collection<E> gibt es mehrere Haupttypen von Collections, von denen einige Untertypen haben.

  • List<E> ist eine geordnete Sammlung von Objekten. Es ähnelt einem Array, definiert jedoch keine Größenbegrenzung. Implementierungen werden normalerweise intern größer, um neuen Elementen Rechnung zu tragen.
  • Set<E> ist eine Sammlung von Objekten, die keine Duplikate zulässt.
    • SortedSet<E> ist ein Set<E> , das auch die Elementreihenfolge angibt.
  • Map<K,V> ist eine Sammlung von Schlüssel / Wert-Paaren.
    • SortedMap<K,V> ist eine Map<K,V> , in der auch die Elementreihenfolge angegeben ist.
Java SE 5

Java 5 fügt einen neuen Sammlungstyp hinzu:

  • Queue<E> ist eine Sammlung von Elementen, die in einer bestimmten Reihenfolge verarbeitet werden sollen. Die Implementierung gibt an, ob dies FIFO oder LIFO ist. Dies macht die Stack Klasse überflüssig.
Java SE 6

Java 6 fügt einige neue Untertypen von Sammlungen hinzu.

  • NavigableSet<E> ist ein Set<E> mit integrierten Navigationsmethoden.
  • NavigableMap<K,V> ist eine Map<K,V> mit integrierten Navigationsmethoden.
  • Deque<E> ist eine Queue<E> , die von beiden Enden gelesen werden kann.

Beachten Sie, dass die obigen Elemente alle Schnittstellen sind. Um sie verwenden zu können, müssen Sie die entsprechenden implementierenden Klassen wie ArrayList , HashSet , HashMap oder PriorityQueue .

Für jeden Auflistungstyp gibt es mehrere Implementierungen mit unterschiedlichen Leistungskennzahlen und Anwendungsfällen.

Beachten Sie, dass das Liskov-Substitutionsprinzip für die Erfassungsuntertypen gilt. Das heißt, ein SortedSet<E> kann an eine Funktion übergeben werden, die ein Set<E> erwartet. Weitere Informationen zur Verwendung von Auflistungen mit Klassenvererbung finden Sie auch im Abschnitt Generics über Bounded Parameters .

Wenn Sie eigene Sammlungen erstellen möchten, kann es einfacher sein, eine der abstrakten Klassen (z. B. AbstractList ) zu erben, anstatt die Schnittstelle zu implementieren.

Java SE 1.2

Vor 1.2 mussten Sie stattdessen die folgenden Klassen / Schnittstellen verwenden:

  • Vector statt ArrayList
  • Dictionary anstelle von Map . Beachten Sie, dass das Wörterbuch auch eine abstrakte Klasse und keine Schnittstelle ist.
  • Hashtable statt HashMap

Diese Klassen sind veraltet und sollten in modernem Code nicht verwendet werden.

Sammlungen Verwandte Beispiele