流<String> 到地图<String, Integer>
Stream<String> to Map<String, Integer>
我有一个 Stream<String>
的文件,现在我想将相同的单词组合成一个 Map<String, Integer>
这很重要,这个单词在 Stream<String>
.[=16 中出现的频率=]
我知道我必须使用collect(Collectors.groupingBy(..))
,但我不知道如何使用它。
如果有人可以提供一些解决此问题的提示,那就太好了!
使用 Collectors.counting()
作为下游收集器创建 Map<String, Long>
非常容易:
Stream<String> s = Stream.of("aaa", "bb", "cc", "aaa", "dd");
Map<String, Long> map = s.collect(Collectors.groupingBy(
Function.identity(), Collectors.counting()));
如果你不喜欢Long
类型,你可以这样数到Integer
:
Map<String, Integer> mapInt = s.collect(Collectors.groupingBy(
Function.identity(),
Collectors.reducing(0, str -> 1, Integer::sum)));
我有一个 Stream<String>
的文件,现在我想将相同的单词组合成一个 Map<String, Integer>
这很重要,这个单词在 Stream<String>
.[=16 中出现的频率=]
我知道我必须使用collect(Collectors.groupingBy(..))
,但我不知道如何使用它。
如果有人可以提供一些解决此问题的提示,那就太好了!
使用 Collectors.counting()
作为下游收集器创建 Map<String, Long>
非常容易:
Stream<String> s = Stream.of("aaa", "bb", "cc", "aaa", "dd");
Map<String, Long> map = s.collect(Collectors.groupingBy(
Function.identity(), Collectors.counting()));
如果你不喜欢Long
类型,你可以这样数到Integer
:
Map<String, Integer> mapInt = s.collect(Collectors.groupingBy(
Function.identity(),
Collectors.reducing(0, str -> 1, Integer::sum)));