【发布时间】:2020-08-10 06:50:51
【问题描述】:
我有一个任务,我们正在读取文本文件并计算每个单词的出现次数(忽略标点符号)。我们不必使用流,但我想练习使用它们。
到目前为止,我能够读取一个文本文件并将每一行放入一个字符串中,并将所有字符串放入一个列表中:
try (Stream<String> p = Files.lines(FOLDER_OF_TEXT_FILES)) {
list = p.map(line -> line.replaceAll("[^A-Za-z0-9 ]", ""))
.collect(Collectors.toList());
}
然而,到目前为止,它只是将所有行变成了一个字符串,因此列表的每个元素都不是一个单词,而是一行。有没有一种使用流的方法,我可以让每个元素都是一个单词,使用像 String 的 split 方法和正则表达式?还是我必须在流本身之外处理这个问题?
【问题讨论】:
-
分割后使用flatMap进行展平
标签: java string java-stream