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.
(Die obige Darstellung ist angelehnt an ein Diagramm der Hochschule Bielefeld.)
Zu den obigen Klassen/Interfaces:
LinkedList
und ArrayList
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.contains
und containsAll
, die in konstanter Zeit ausgeführt werden. Diese Methoden haben bei der LinkedList
und der ArrayList
Ausführungszeiten O(n).
Die Klasse Collections
stellt statische Methoden zum Sortieren und zum zufälligen Mischen der Elemente einer Collection zur Verfügung.
Die Klasse HashMap
ist daraufhin optimiert, in konstanter Zeit zu einem gegebenen Key-Objekt das entsprechende Value-Objekt zu finden.
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.
Schulklasse
speichert die Bezeichnung und den Namen der Klassenleitung. Die Klasse Klassenverzeichnis
soll Methoden zum Speichern von Schulklassen, zur Suche einer Klasse (bei gegebener Bezeichnung) und zur Ausgabe aller Klassen besitzen.Telefonbucheintrag
besteht aus Telefonnummer, Rufname, Familienname und Anschrift. Die Klasse Telefonbuch
soll Methoden zum Speichern von Telefonbucheinträgen und zum Suchen aller Einträge zu einem Familiennamen besitzen.