One*_*Two 2 java java-8 java-stream
我想从大文件内容中找到重复的字数.有没有使用java 8流API的最佳方法?
更新细节
文件格式为逗号分隔值,文件大小约为4 GB
我不知道是否有最好的方法,而且还取决于你没有告诉我们的细节.现在我假设一个文本文件,其中每行的空格分隔有多个单词.一种可能的方法是:
Map<String, Long> result = Files.lines(filePath)
.flatMap(line -> Stream.of(line.split(" ")))
.collect(Collectors.groupingBy(word -> word, Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)
我认为需要改进每一行分为单词; 例如,你可能想要丢弃标点符号.以此为出发点,将其发展为您在特定情况下的需求.
编辑:感谢@ 4castle的灵感,可以通过这种方式分割成单词,而不是基于lambda的方法引用:
Map<String, Long> result = Files.lines(filePath)
.flatMap(Pattern.compile(" ")::splitAsStream)
.collect(Collectors.groupingBy(word -> word, Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)
它产生相同的.Edit2:这里删除了关于优化的废话.
也许我们不应该走得太远,直到我们知道在每一行中划分单词的更准确的要求.
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |