通过访问列表计算从文件中读取并存储在列表中的单词数

时间:2019-11-02 01:47:35

标签: java

我正在从磁盘读取数据并使用以下命令存储文件内容:

BufferedReader br = Files.newBufferedReader(Paths.get(file)))

然后

list = br.lines().collect(Collectors.toList());

可以从类中的其他方法访问list。我如何使用它来获取从文件中读取的单词数。 我试过list.count(),但是它给出了错误的值。

我尝试了一些lambda函数,即使那些函数仅给我不同单词的数量,但没有给我总单词数量。任何见解将不胜感激。

2 个答案:

答案 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

相关问题