Dienstag, 17. Mai 2011
Aufgaben zu Collections in Java (POS1: 2A, 2C)
Vorarbeiten
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
Das Package
Im folgenden der Ausschnitt mit dem
Im Paket
Im
Die Datei java-collections_1_1.zip kann nach dem Download direkt in Eclipse importiert werden:
Erweiterung
Erweitern Sie das Projekt so, dass die Worthäufigkeiten in Dateien ermittelt werden können.
Aufruf:
Es sollen also keine, eine (
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
- 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!). - 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
step
1 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
).Abonnieren Posts [Atom]
Kommentar veröffentlichen