为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Java Streams 列出不同的元素,包括计数

使用 Java Streams 列出不同的元素,包括计数

哔哔one 2021-07-10 17:00:19
我想知道是否可以使用单个 Java Steam 语句打印出集合中的唯一元素并包括每个元素的计数。例如,如果我有:List<String> animals = Arrays.asList("dog", "cat", "pony", "pony", "pony", "dog");我希望流打印:cat - 1dog - 2pony - 3
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

你可以这样做,

Map<String, Long> result = animals.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

用于Collectors.groupingBy对具有相同键的元素进行分组。然后counting为每个组应用下游收集器以获取计数。


查看完整回答
反对 回复 2021-07-23
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您可以组合分组和计数收集器:

Map<String, Long> countMap = Arrays.asList("dog", "cat", "pony", "pony", "pony", "dog")
    .stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))

这导致了这张地图:

{cat=1, dog=2, pony=3}


查看完整回答
反对 回复 2021-07-23
  • 2 回答
  • 0 关注
  • 221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信