gpt4 book ai didi

java - 使用流来查找最高的唯一值

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:54 26 4
gpt4 key购买 nike

假设我有这个简单的 Car 对象:

class Car {
String id;
String model;
Integer price;
}

现在我有一个可能看起来像这样的汽车列表:

{ Car(1, Commodore, 55000), Car(2, F150, 120000), Car(3, F150, 130000),
Car(4, Camry, 50000), Car(5,Commodore,50000)}

我想从列表中过滤掉任何重复的车型,确保我只保留每个重复车型中价格最高的汽车,例如:

{ Car(1, Commodore, 55000), Car(3, F150, 130000), Car(4, Camry, 50000) }

我相信我可以使用 Streams API 做到这一点,但我只是在努力将正确的调用链接在一起。

在我的脑海里,我会想象伪代码是这样的:

  • 收集所有汽车,按型号分组
  • 在每个模型的 List 上使用 Collectors.maxBy() 以获得最贵的
  • 再次将生成的单项列表合并为全局汽车列表

尝试将它们拼接起来有点困惑 - 有什么想法吗?

最佳答案

您可以按型号创建值(value)最高的汽车的 map :

List<Car> cars = new ArrayList<> ();
Map<String,Optional<Car>> maxCarByModel =
cars.stream ()
.collect (Collectors.groupingBy (c -> c.model,
Collectors.maxBy (Comparator.comparing (c->c.price))));

关于java - 使用流来查找最高的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44882756/

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