我正在从磁盘读取数据并使用以下命令存储文件内容:
BufferedReader br = Files.newBufferedReader(Paths.get(file)))
然后
list = br.lines().collect(Collectors.toList());
可以从类中的其他方法访问list
。我如何使用它来获取从文件中读取的单词数。
我试过list.count(),但是它给出了错误的值。
我尝试了一些lambda函数,即使那些函数仅给我不同单词的数量,但没有给我总单词数量。任何见解将不胜感激。
答案 0 :(得分:0)
您阅读的是行而不是文字。
如果您想要文件中的单词数,请使用
int numLines;
try (var lines = Files.lines(Path.of(file))) {
numLines = lines.filter(l -> !l.isBlank()).mapToInt(w -> w.split("\\h").length).sum()
}
答案 1 :(得分:0)
由于它是行的列表,因此您需要一种计数行中单词的方法:
private static int countWordsInLine(String line) {
line = line.trim();
return line.isEmpty() ? 0 : line.split("\\s+").length;
}
从那里,您只需要对列表中的行进行求和:
private int wordCount() {
return lines.stream().mapToInt(ThisClass::countWordsInLine).sum();
}
用声明ThisClass
的类的名称替换countWordsInLine
。