Programmieren II (WF2)

Aufgabenblatt 7: Collections und Maps

Aufgabe 7.1: Wörter zählen

Erstellen Sie ein Programm, welches eine Textdatei zeilenweise einliest und die Häufigkeit der Wörter zählt.

Nutzen Sie hierzu eine HashMap: Der Schlüssel ist jeweils das Wort, Wert die Häufigkeit des Wortes.

Geben Sie am Ende eine (unsortierte) Liste aller Worte und ihre Häufigkeit aus.

Hinweis:

  • Ab Java 7 können Sie eine komplette Textdatei mit folgender Anweisung einlesen: List<String> lines = Files.readAllLines(Paths.get(path), Charset.defaultCharset());. lines enthält dann eine Liste mit einem Eintrag pro Textzeile.

Aufgabe 7.2: Wörter Top 10 (für Fortgeschrittene)

Erweitern Sie Ihr Programm aus der obigen Aufgabe   dahingehend, dass nun nicht mehr alle Worte sondern nur die 10 häufigsten Wörter in sortierter Reihenfolge ausgegeben werden.

Hinweise (Details siehe API-Dokumentation):

  • Über die Methode keySet() können Sie sich die Schlüssel einer Map als `Set geben lassen.
  • Ein Set können Sie mit der Methode toArray() in ein Array umwandeln.
  • Mit der statischen Methode Arrays.sort(T[] a, Comparator<? super T> c) können Sie Arrays sortieren. Dabei können Sie in der hier angegebenen Variante auch einen (eigenen) Comparator für den Vergleich zweier Wörter angeben.

Aufgabe 7.3: Primzahlen berechnen mit Sets

Schreiben Sie ein Programm, das unter Verwendung der Klasse TreeSet die Primzahlen zwischen 2 und n nach der folgenden Methode (Sieb des Eratosthenes) berechnet und ausdruckt:

  1. Lies n ein.
  2. Erzeuge die Menge T als Menge aller Zahlen von 2 bis n.
  3. Erzeuge die zunächst leere Menge S.
  4. Setze p auf den Wert 2.
  5. Wiederhole so lange, bis gilt 2p > n:
    1. Nimm alle (nichttrivialen) Vielfachen von p (also 2p, 3p, . . .) in S auf.
    2. Falls p noch den Wert 2 hat, setze p auf 3, andernfalls erhöhe p so lange um 2, bis für p gilt p ∉ S. 

  6. Entferne alle Elemente der Menge S aus der Menge T.
  7. Gib alle Elemente der Menge T aus (je 10 Werte in einer Zeile).