Inhaltsverzeichnis
Das Collection Framework von Java
Damit jede Firma eigene Varianten derselben Standardklassen entwickelt, stellt jede Programmiersprache eine Bibliothek mit Referenzimplementierungen der gängigsten Klassen zur Verfügung. Bei Java ist dies die Java Standard Libary.
Zum strukturierten Speichern gleichartiger Daten gibt es innerhalb dieser Library das Java Collections Framework, dessen wichtigste Klassen im Folgenden dargestellt werden.
Klassen zum Speichern eindimensionaler Datenstrukturen
(Die obige Darstellung ist angelehnt an ein Diagramm der Hochschule Bielefeld.)
Zu den obigen Klassen/Interfaces:
- Grün gefüllt sind Interfaces, blau gefüllt sind Klassen.
- Die Klassen
LinkedList
undArrayList
unterscheiden sich vor allem in der Zugriffszeit ihrer Methoden.LinkedList
basiert auf einer verketteten Liste. Sie ermöglicht Einfügen/Löschen in konstanter Zeit, ist aber langsam beim Zugriff auf's i-te Element und verbraucht zusätzlichen Speicherplatz zur Speicherung der verketteten Knoten-Objekte.ArrayList
basiert auf einem Array. Ist es zu klein, wir ein größeres reserviert und umkopiert.
ArrayList
ist schnell beim Zugriff aufs i-te Element und meist schnell beim Hinten-Anfügen, jedoch langsam beim Einfügen und Löschen von Elementen mittendrin.- Die Klasse Set garantiert nicht, dass die Anordnung der Elemente ("hintereinander") beibehalten wird, optimiert dafür aber die Geschwindigkeit der Methoden
contains
undcontainsAll
, die in konstanter Zeit ausgeführt werden. Diese Methoden haben bei derLinkedList
und derArrayList
Ausführungszeiten O(n).
Die Utility-Klasse Collections
Die Klasse Collections
stellt statische Methoden zum Sortieren und zum zufälligen Mischen der Elemente einer Collection zur Verfügung.
Klassen zum Speichern einer Relation (Maps)
Die Klasse HashMap
ist daraufhin optimiert, in konstanter Zeit zu einem gegebenen Key-Objekt das entsprechende Value-Objekt zu finden.
Aufgaben
Schreiben Sie für die folgenden Szenarien jeweils eine Klasse zur Datenspeicherung und zwei JUnit-Testfälle, die die korrekte Speicherung/Abfrage der Daten verifizieren.
- 1. Die Klasse
Schulklasse
speichert die Bezeichnung und den Namen der Klassenleitung. Die KlasseKlassenverzeichnis
soll Methoden zum Speichern von Schulklassen, zur Suche einer Klasse (bei gegebener Bezeichnung) und zur Ausgabe aller Klassen besitzen. - 2. Ein
Telefonbucheintrag
besteht aus Telefonnummer, Rufname, Familienname und Anschrift. Die KlasseTelefonbuch
soll Methoden zum Speichern von Telefonbucheinträgen und zum Suchen aller Einträge zu einem Familiennamen besitzen. - 3. Ein Unternehmen veröffentlicht Gutscheincodes (Codebezeichner, Datum von, Datum bis, Prozentsatz), die die Kunden beim Checkout eingeben können um einen Nachlass zu erhalten. Jeder Code kann je Kunde nur ein Mal verwendet werden.