流收集列表以映射

时间:2018-07-04 15:22:32

标签: java java-stream

我有此代码:

    List<String> list = Arrays.asList("a", "b", "c", "a", "c");
    Map<String, List<String>> map = list.stream().collect(Collectors.groupingBy(
    Function.identity() ,
    Collectors.toCollection(ArrayList::new)
    ));

它产生的是

  {a=[a, a], b=[b], c=[c, c]}

请问我该如何编写映射方法以获得一个可以给我的地图:

{a=2, b=1, c=2}

1 个答案:

答案 0 :(得分:3)

使用Collectors.counting

list.stream().collect(Collectors.groupingBy(
            Function.identity(), Collectors.counting()));

以上内容将为您提供Map<String, Long>