【问题标题】:Stream<String> to Map<String, Integer>Stream<String> 到 Map<String, Integer>
【发布时间】:2015-07-08 13:38:22
【问题描述】:

我有一个文件的Stream&lt;String&gt;,现在我想将相同的单词组合成一个Map&lt;String, Integer&gt;,这很重要,这个单词在Stream&lt;String&gt; 中出现的频率。

我知道我必须使用collect(Collectors.groupingBy(..)),但我不知道如何使用它。

如果有人可以提供一些提示如何解决这个问题,那就太好了!

【问题讨论】:

    标签: java java-8 java-stream collect collectors


    【解决方案1】:

    使用Collectors.counting() 作为下游收集器很容易创建Map&lt;String, Long&gt;

    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)));
    

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 2012-05-17
      • 2012-05-26
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      相关资源
      最近更新 更多