首页 > 解决方案 > 列出不同的元素,包括 Java Streams 的计数

问题描述

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

例如,如果我有:

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

我希望流打印:

cat - 1
dog - 2
pony - 3

标签: javacountjava-streamdistinct

解决方案


你可以这样做,

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

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


推荐阅读