【问题标题】:How to get the elements which specified field value value is max from object list [duplicate]如何从对象列表中获取指定字段值最大的元素[重复]
【发布时间】:2020-09-08 04:03:24
【问题描述】:

如何从对象列表中获取指定字段值最大的元素?

public class MyObj {
    private String name;
    private int value;
    // getter & setter
}

List<MyObj> list = Arrays.asList(
        new MyObj("a", 1),
        new MyObj("b", 1),
        new MyObj("c", 2),
        new MyObj("d", 2),
        new MyObj("e", 3),
        new MyObj("f", 3)
);
// how to get the objs which value is max, here is MyObj("e", 3) and MyObj("f", 3)
List<MyObj> maxList = //todo ;

注意:不要取最大值

【问题讨论】:

  • 您已经在下面的链接中获得了答案,该链接指向用于关闭您的 prior deleted question 的重复问题。答案已经给你了,你为什么还要问?
  • 我看了link,但是是获取MyObj.value的最大值,并不是所有的MyObj对象都有最大值。我以为我没有描述清楚,所以我又问了一个新问题。

标签: java java-8 java-stream


【解决方案1】:

这将完成这项工作。它首先根据该值获取最大值并根据该值过滤列表。

int maxValue = list.stream()
        .mapToInt(MyObj::getValue)
        .max().orElse(Integer.MIN_VALUE);

List<MyObj> maxList = list.stream()
        .filter(obj -> obj.getValue() == maxValue)
        .collect(Collectors.toList());

【讨论】:

  • 可以,但是看起来有点麻烦。
猜你喜欢
  • 2021-02-18
  • 2015-12-11
  • 2023-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 2018-02-12
  • 1970-01-01
相关资源
最近更新 更多