uebungen/sources/src/main/java/pr2/collections/map/WordCount.java

77 lines
2.0 KiB
Java
Raw Normal View History

2023-06-15 11:30:13 +02:00
package pr2.collections.map;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Zählen von Worthäufigkeiten.
*/
public class WordCount {
/**
* Listet alle Worte in der Datei und deren Häufigkeit auf.
* Die zurückgegebene Liste ist bereits nach der Häufigkeit
* sortiert.
*
* @param filename Dateiname
* @return die Liste der vorhandenen Wörter
* @throws IOException Fehler beim Dateizugriff.
*/
private static List<WordFrequency> countWords(String filename)
throws IOException {
// TODO: Map deklarieren
// Datei zum Lesen öffnen
BufferedReader reader = new BufferedReader(new FileReader(filename));
String line; // aktuelle Zeile
// Über die Zeilen der Datei iterieren
while ((line = reader.readLine()) != null) {
// Sonderzeichen entfernen und die Zeilen in Worte splitten
line = line.toLowerCase();
line = line.replaceAll("[\",.:;)'\\-!?]", "");
String[] words = line.toLowerCase().split("[,. ]");
for (String word : words) {
// TODO: Worthäufigkeiten in Map speichern
}
}
reader.close();
// TODO: Worthäufigkeiten aus der Map extrahieren und sortieren
// TODO: Ergebnis zurückgeben
return null;
}
/**
* Hauptmethode.
*
* @param args Kommandozeilen-Argumente.
*/
public static void main(String[] args) {
try {
List<WordFrequency> words = countWords(
"pr2/collections/map/kafka.txt");
for (WordFrequency word : words) {
System.out.println(word);
}
} catch (IOException e) {
System.err.println("Probleme beim Dateizugriff: " + e);
}
}
}