文件中的字数统计频率

我有一个目录,其中有1000个txt.files。 我想知道每一个字在1000文档中发生了多少次。 所以说甚至“牛”这个词在X中出现了100次,它仍然算作一个。 如果它出现在另一个文档中,则会增加1。 因此,如果每个文档中都出现“cow”,则最大值为1000。 如何在不使用任何其他外部库的情况下轻松实现此目的。 这是我到目前为止所拥有的

private Hashtable getAllWordCount() private Hashtable getAllWordCount() { Hashtable result = new Hashtable(); HashSet words = new HashSet(); try { for (int j = 0; j < fileDirectory.length; j++){ File theDirectory = new File(fileDirectory[j]); File[] children = theDirectory.listFiles(); for (int i = 0; i < children.length; i++){ Scanner scanner = new Scanner(new FileReader(children[i])); while (scanner.hasNext()){ String text = scanner.next().replaceAll("[^A-Za-z0-9]", ""); if (words.contains(text) == false){ if (result.get(text) == null) result.put(text, 1); else result.put(text, result.get(text) + 1); words.add(text); } } } words.clear(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(result.size()); return result; } 

您还需要一个HashSet ,您可以在其中存储从当前文件中读取的每个唯一单词。

然后在读完每个单词之后,你应该检查它是否在集合中,如果不是,则在result映射中增加相应的值(或者如果它是空的则添加新条目,就像你已经做的那样)并添加单词集合。

不要忘记在开始阅读新文件时重置该设置。

这个怎么样?

 private Hashtable getAllWordCount() { Hashtable result = new Hashtable(); HashSet words = new HashSet(); try { for (int j = 0; j < fileDirectory.length; j++){ File theDirectory = new File(fileDirectory[j]); File[] children = theDirectory.listFiles(); for (int i = 0; i < children.length; i++){ Scanner scanner = new Scanner(new FileReader(children[i])); while (scanner.hasNext()){ String text = scanner.next().replaceAll("[^A-Za-z0-9]", ""); words.add(text); } for (String word : words) { Integer count = result.get(word) if (result.get(word) == null) { result.put(word, 1); } else { result.put(word, result.get(word) + 1); } } words.clear(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(result.size()); return result; }