我想知道是否可以使用单个 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
为每个组应用下游收集器以获取计数。
泛舟湖上清波郎朗
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}
添加回答
举报
0/150
提交
取消