gpt4 book ai didi

java - 使用 java 8 计算列表中对象的属性

转载 作者:太空狗 更新时间:2023-10-29 23:03:48 27 4
gpt4 key购买 nike

那么假设我有一个 Arraylist对象 Animal .对象的那个类是这样的:

class Animal{
String Name;//for example "Dog"
String Color
}

我想做的是计算 ArrayList 中每只动物有多少种不同的颜色并将它们放在 Map<String,Integer> 中其中 String是名字和Integer是不同颜色的数量。

例如,如果有 4 条黑狗和 1 条白狗,则等同于放置在 map 上的是

map.put("Dog",2);

我知道可以使用 Stream 来完成但我不知道怎么做。

最佳答案

你想要做的是 grouping operation使用 name 属性作为键。这是最简单的部分。更棘手的是将“不同颜色的计数”表示为下游收集器。由于 JRE 中没有这样的收集器,我们必须构建一个,利用 Set 存储。请注意,即使有一个内置的,它也必须在引擎盖下使用类似的存储。所以我们map the elements到颜色,collect them into Sets (这意味着只保留不同的值)和 finish通过查询尺寸:

Map<String, Integer> map = animalStream.collect(
Collectors.groupingBy(Animal::getName,
Collectors.collectingAndThen(
Collectors.mapping(Animal::getColor, Collectors.toSet()),
Set::size)));

关于java - 使用 java 8 计算列表中对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36544083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com