![](/img/trans.png)
[英]How to count files and count words in a set of files Using Java 8 and Streams
[英]Count all the words in a file using java Streams
我试图计算文本文件中唯一单词的数量。 为了简单起见,我当前的文件内容为:
这是一个示例文件
我的尝试是:
long wordCount =
Files.lines(Paths.get("sample.txt"))
.map(line -> line.split("\\s+"))
.distinct()
.count();
System.out.println(wordCount);
这可以编译并正常运行,但结果为1
,而应为5
。
您正在将每行映射到一个数组(将Stream<String>
转换为Stream<String[]>
,然后计算数组元素的数量(即文件中的行数)。
您应该使用flatMap
来创建文件中所有单词的Stream<String>
,并且在distinct()
和count()
操作之后,您将获得不同单词的数量。
long wordCount =
Files.lines(Paths.get("sample.txt"))
.flatMap(line -> Arrays.stream(line.split("\\s+")))
.distinct()
.count();
您似乎正在计算文件中的行数:
map(line -> line.split("\\s+")) // this is a Stream<String[]>
您应进一步将Stream.flatMap
用作:
long wordCount = Files.lines(Paths.get("sample.txt"))
.map(line -> line.split("\\s+"))
.flatMap(Arrays::stream)
.distinct()
.count();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.