我想通过 Id 获得最高分组。如果两个最高分相同,那么我想根据最低可选 ID 获得最高分。我想在 Java Stream 中获得它。到目前为止,我正在尝试以下代码这不起作用示例:
数组列表:
ID:1 Score:80 OptionalId:1
ID:1 Score:90 OptionalId:2
ID:1 Score:90 OptionalId:3
ID:2 Score:80 OptionalId:1
ID:2 Score:100 OptionalId:3
ID:2 Score: 100 可选 ID:5
结果应该是
ID:1 得分 90 OptionalId:2
ID 2 得分 100 OptionalId:3
Map<Long, Optional<Person>> result1 = records.stream()
.collect(Collectors.groupingBy(Person::getId,
Collectors.maxBy(Comparator.comparing(Person::getScore)),
Collector.minBy(Comparator.comparing(Person::getOptionalId))));
for(Person ns: result1) {
sb.append(ns.getBatchNumber());
sb.append(',');
慕哥9229398
有只小跳蛙
月关宝盒
相关分类