gpt4 book ai didi

java - 在 Java 8 中排序和分组并找到每个组的最大值

转载 作者:行者123 更新时间:2023-12-03 22:09:55 25 4
gpt4 key购买 nike

我有一个对象,它有一个名称和一个分数。我想按名称对元素进行排序并找到该名称的最大分数。

例如下面是对象(名称,分数):

(a, 3)
(a, 9)
(b, 7)
(b, 10)
(c, 8)
(c, 3)

输出应该是:
(a, 9)
(b, 10)
(c, 8)

我可以使用下面的代码进行排序,但我无法找出最大值
List<Record> result = list.stream()
.sorted(Comparator.comparing(Record::score))
.collect(Collectors.groupingBy(Record::name, LinkedHashMap::new, Collectors.toList()))
.values().stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());

最佳答案

您需要链接maxBygroupinhBy Collection 家:

Map<String,Record> result = 
list.stream()
.sorted(Comparator.comparing(Record::score))
.collect(Collectors.groupingBy(Record::name,
LinkedHashMap::new,
Collectors.maxBy(Comparator.comparing(Record::getScore))));

如果你只关心 Record实例,您可以获得 values()Map .

关于java - 在 Java 8 中排序和分组并找到每个组的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56667274/

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