7 java cpu-word distinct-values java-8 java-stream
我试图计算文本文件中唯一单词的数量.为简单起见,我当前的文件内容是:
这是一个示例文件
我的尝试是:
long wordCount =
Files.lines(Paths.get("sample.txt"))
.map(line -> line.split("\\s+"))
.distinct()
.count();
System.out.println(wordCount);
Run Code Online (Sandbox Code Playgroud)
编译并运行正常,但结果1
应该是5
.
Era*_*ran 12
您将每一行映射到一个数组(将a转换Stream<String>
为a Stream<String[]>
,然后计算数组元素的数量(即文件中的行数).
您应该使用flatMap
创建Stream<String>
文件中的所有单词,并在distinct()
和count()
操作之后,您将获得不同单词的数量.
long wordCount =
Files.lines(Paths.get("sample.txt"))
.flatMap(line -> Arrays.stream(line.split("\\s+")))
.distinct()
.count();
Run Code Online (Sandbox Code Playgroud)
您似乎在计算文件中的行:
map(line -> line.split("\\s+")) // this is a Stream<String[]>
Run Code Online (Sandbox Code Playgroud)
您还应进一步使用Stream.flatMap
:
long wordCount = Files.lines(Paths.get("sample.txt"))
.map(line -> line.split("\\s+"))
.flatMap(Arrays::stream)
.distinct()
.count();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
468 次 |
最近记录: |