Programmieren_1/collections.md

2.4 KiB

Collections

Abstrakte Datentypen. Behälter für Daten mit verschiedenen Eigenschaften. Die wichtigsten Intefaces sind Collection, List, Set und Queue.


Collection

Supertyp von List, Set und Queue. Repräsentiert eine Gruppe von Objekten, Elemente genannt.

  • Es gibt keine direkte Implementation von dem Interface Collection sondern nur von seinen Subtypen.
  • Collections können sortiert oder unsortiert sein.
  • Collections können Duplikate zulassen oder verbieten.

Set

  • Mengen sind unsortiert und lassen keine Duplikate zu.

Mengen ergänzen das Interface Collection um keine Methoden. Der einzige Unterschied zwischen Collection und Set sind die vorgeschriebenen Implementationen von add, equals und hashCode.

Häufig verwendete Implementationen von Set sind: HashSet und TreeSet.


List

  • Listen sind sortiert und lassen Duplikate zu.

Das Interface List ergänzt 4 weitere Methoden zu dem Interface Collection, welche einen indizierten Zugriff auf die Elemente zulassen. Der Index startet, wie bei Arrays, von 0. Die Methoden sind:

  • <E> get(int index)
  • int indexOf(Object o)
  • int lastIndexOf(Object o)
  • boolean remove(int index)

Folgende Implementationen von List werden häufig verwendet: ArrayList und LinkedList.


Queue

  • Queues sind sortiert und erlauben Duplikate.

Das Interface Queue ist eine Collection in der Elemente vor ihrer Bearbeitung abgespeichert werden können. Die meisten Queues operieren dabei nach den FIFO-Prinzip. Das Interface erlaubt 3 Operationen:

  • Elemente hinzufügen mit boolean add(E element) oder boolean offer(E element)
  • Elemente entnehmen mit E remove() oder E poll()
  • Das oberste Element zurückgeben ohne es zu entnehmen E element() oder E peek()

Als Implementation wird häufig eine LinkedList verwendet.


Aufgaben

  • Wie verhält sich die Methode boolean add(E element) und in welchem Interface wird sie zuerst spezifiziert?
  • Mit welcher Methode können mehrere Elemente einer Collection ab einem gegebenen Index in eine List eingefügt werden?
  • Wo ist spezfiziert welche Konstruktoren Collectionsanbieten und warum stehen sie nicht im Interface?