我想知道是否可以使用單個 Java Steam 語句打印出集合中的唯一元素并包括每個元素的計數(shù)。例如,如果我有:List<String> animals = Arrays.asList("dog", "cat", "pony", "pony", "pony", "dog");我希望流打?。篶at - 1dog - 2pony - 3
2 回答

慕斯709654
TA貢獻1840條經(jīng)驗 獲得超5個贊
你可以這樣做,
Map<String, Long> result = animals.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
用于Collectors.groupingBy
對具有相同鍵的元素進行分組。然后counting
為每個組應用下游收集器以獲取計數(shù)。

泛舟湖上清波郎朗
TA貢獻1818條經(jīng)驗 獲得超3個贊
您可以組合分組和計數(shù)收集器:
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
提交
取消