Benutzer-Werkzeuge

Webseiten-Werkzeuge


anhang:collections:start

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 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.
    • Die Klasse Set garantiert nicht, dass die Anordnung der Elemente ("hintereinander") beibehalten wird, optimiert dafür aber die Geschwindigkeit der Methoden contains und containsAll, die in konstanter Zeit ausgeführt werden. Diese Methoden haben bei der LinkedList und der ArrayList 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 Klasse Klassenverzeichnis 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 Klasse Telefonbuch 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.
anhang/collections/start.txt · Zuletzt geändert: 2024/12/17 11:17 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki