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

我想知道是否可以使用单个 Java Steam 语句打印出集合中的唯一元素并包括每个元素的计数。


例如,如果我有:


List<String> animals = Arrays.asList("dog", "cat", "pony", "pony", "pony", "dog");

我希望流打印:


cat - 1

dog - 2

pony - 3


哔哔one
浏览 222回答 2
2回答

慕斯709654

你可以这样做,Map<String,&nbsp;Long>&nbsp;result&nbsp;=&nbsp;animals.stream() &nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.groupingBy(Function.identity(),&nbsp;Collectors.counting()));用于Collectors.groupingBy对具有相同键的元素进行分组。然后counting为每个组应用下游收集器以获取计数。

泛舟湖上清波郎朗

您可以组合分组和计数收集器:Map<String,&nbsp;Long>&nbsp;countMap&nbsp;=&nbsp;Arrays.asList("dog",&nbsp;"cat",&nbsp;"pony",&nbsp;"pony",&nbsp;"pony",&nbsp;"dog") &nbsp;&nbsp;&nbsp;&nbsp;.stream() &nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.groupingBy(Function.identity(),&nbsp;Collectors.counting()))这导致了这张地图:{cat=1,&nbsp;dog=2,&nbsp;pony=3}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java