gpt4 book ai didi

java - 按键中的属性分组时对值中的元素进行计数

转载 作者:行者123 更新时间:2023-12-02 01:07:11 25 4
gpt4 key购买 nike

我有一个Map<Owner, List<Car>>ownerMap 。我的Car类有getColor()getPrice()方法。我的 Owner类具有 getCity() 方法。

我想按城市统计汽车的分组情况。 (例如:布达佩斯:4(汽车))

这是我到目前为止的代码:

List<String> cities = ownerMap.entrySet()
.stream()
.map(m -> m.getKey().getCity())
.distinct()
.collect(Collectors.toList());

最佳答案

您应该看看Collectors.groupingByCollectors.summingInt .

例如,类似:

Map<String, Integer> cities=ownerMap.entrySet()
.stream()
.collect(Collectors.groupingBy(e -> e.getKey().getCity(), Collectors.summingInt(e -> e.getValue().size())));

cities.forEach((name, count) -> {
System.out.println(name + ":" + count);
});

来自Collectors.groupingBy文档:

Returns a Collector implementing a cascaded "group by" operation on input elements of type T, grouping elements according to a classification function, and then performing a reduction operation on the values associated with a given key using the specified downstream Collector.

在您的情况下,分类函数是按城市 (entry.getKey().getCity()) 进行的,您的归约操作是按键 (entry.getCity()) 划分的汽车列表大小的总和。 getValue().size()).

已编辑修改为按城市获取汽车总数(列表大小)

关于java - 按键中的属性分组时对值中的元素进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59866921/

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