Dienstag, 17. Mai 2011

 

Aufgaben zu Collections in Java (POS1: 2A, 2C)

Vorarbeiten
  1. Arbeiten Sie die Beispiele im Buch Kapitel 12 durch. Sie finden den Sourcecode dazu unter /home/teachers/hp/public/pos1-2/kap12 (unter der Linux-Umgebung!).
  2. Machen Sie die Übung 12.8.

Beispielprojekt zu Java-Collections, Import von Projekten in Eclipse
Die Datei java-collections_1_1.zip enthält ein Eclipse-Projekt mit einem Beispiel zur Verwendung der Java-Collection-API.
Im Package simple finden Sie ein Beispiel zur Ermittlung der Worthäufigkeiten wobei im main nur ein Aufruf mit fixen Testdaten (Array) vorhanden ist.
Das Package step1 zeigt die Vorarbeiten zu dem Programm hauf mit einer eigenen Datenstruktur Data, in der ein Wort und die Häufigkeit gespeichert wird. Zusätzlich implementiert Data das Interface Comparable um eine natürliche Sortierung nach dem Wort zu ermöglichen. Das Interface Comparator wird implementiert, um nach Häufigkeiten zu sortieren. Um auch nach Häufigkeiten absteigend zu sortieren, enthält die Datei Data.java noch eine Klasse DataHaufUmgekehrt, welche ebenfalls Comparator implementiert.
Im folgenden der Ausschnitt mit dem main, welches zeigt, wie man sortiert:
public static void main(String[] args) {
    Data[] worte = new Data[] { new Data("das", 12), new Data("Haus", 3),
        new Data("Text", 23), new Data("Punkt", 2), new Data("Testdaten", 12) };
    System.out.println("unsortiert");
    for (Data d : worte) {
      System.out.println("  " + d);
    }
    Arrays.sort(worte);
    System.out.println("sortiert nach Wort");
    for (Data d : worte) {
      System.out.println("  " + d);
    }
    Arrays.sort(worte, new Data());
    System.out.println("sortiert nach Anzahl");
    for (Data d : worte) {
      System.out.println("  " + d);
    }

    Arrays.sort(worte, new DataHaufUmgekehrt());
    System.out.println("sortiert nach Anzahl absteigend");
    for (Data d : worte) {
      System.out.println("  " + d);
    }
  }

Im Paket step2 wird dann das Beispiel ausgebaut, sodass in der Klasse Hauf zwei Varianten von Maps zum Speichern der Worthäufigkeiten verwendet werden. Eine HashMap und eine TreeMap. Für die HashMap muss die Klasse Data zusätzlich noch die Methoden equals() und hashCode() implementieren (überschreiben).
Im main von Hauf werden dann Worte aus der Standardeingabe gelesen und in den zwei Maps gespeichert.

Die Datei java-collections_1_1.zip kann nach dem Download direkt in Eclipse importiert werden:
Man wählt dann die Datei aus:
Man erhält dann folgendes Projekt:


Erweiterung
Erweitern Sie das Projekt so, dass die Worthäufigkeiten in Dateien ermittelt werden können.
Aufruf: java Hauf [-h] [-o ausgabe] files...
Es sollen also keine, eine (stdin) oder mehrere Dateien verarbeitet werden können. Optional erfolgt die Ausgabe in eine Datei (Option -o). -h soll eine kurze Hilfe ausgeben.
Wird mehr als eine Datei angegeben, so sollen für jede Datei die häufigsten 10 Worte ausgegeben werden (Ausgabe Dateiname, dann die 10 häufigsten Worte) und zum Schluss die Gesamthäufigkeiten aller Worte in allen Dateien.

Nennen Sie das Projekt collectionhauf (klasse-name-collectionhauf).

Labels: , ,


Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]





<< Startseite

This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]