/** * */ package de.fhswf.in.inf.java1.aufgabe9; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Map.Entry; import java.util.TreeMap; /** * A class, that counts words in files. * * @author $Author: $ * @version $Revision: $, $Date: $ UTC */ public class WordCount { private TreeMap wordMap = new TreeMap<>(); /** * Reads the file and counts the words. * * @param file * The file to be counted. */ public WordCount(File file) { try (BufferedReader f = new BufferedReader(new FileReader(file))) { String line = null; while ((line = f.readLine()) != null) { String[] lineArray = line .split("[^\\p{IsAlphabetic}\\p{Digit}]+"); for (String word : lineArray) { // Split creates empty String, if first char is a split char. if (!word.isEmpty()) { word = word.toLowerCase(); if (wordMap.containsKey(word)) { wordMap.put(word, wordMap.get(word) + 1); } else { wordMap.put(word, new Integer(1)); } } } } } catch (IOException e) { e.printStackTrace(System.err); } } /* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public final String toString() { StringBuilder ret = new StringBuilder(); for (Entry mapping : wordMap.entrySet()) { ret.append(mapping.getKey() + " = " + mapping.getValue() + "\n"); } return ret.toString(); } }