Java stream 获取列表里某个字段值最大的数据
时间: 2023-10-01 14:03:37 浏览: 119
java 获取一组数据中的最大值和最小值
假设你有一个包含对象的列表,每个对象都有一个字段,你想获取该字段值最大的对象,可以使用 Java 8 中的流 (stream) 和 Comparator 接口。以下是一个示例代码:
```java
import java.util.Comparator;
import java.util.List;
public class MyClass {
private int myField;
public MyClass(int myField) {
this.myField = myField;
}
public int getMyField() {
return myField;
}
public static void main(String[] args) {
List<MyClass> myList = List.of(new MyClass(1), new MyClass(5), new MyClass(3));
MyClass maxObject = myList.stream()
.max(Comparator.comparingInt(MyClass::getMyField))
.orElse(null);
System.out.println(maxObject.getMyField()); // 输出 5
}
}
```
在这个示例中,我们创建了一个 MyClass 类来表示列表中的对象。在 main 方法中,我们创建了一个包含三个 MyClass 对象的列表,每个对象的 myField 值不同。我们使用 `myList.stream()` 将列表转换为流,然后使用 `max` 方法和 `Comparator.comparingInt(MyClass::getMyField)` 函数来获取 myField 值最大的对象。最后,我们使用 `orElse(null)` 方法来处理可能的空结果。
注意,如果列表是空的,`max` 方法将返回一个 `Optional.empty()` 对象,因此我们使用 `orElse(null)` 方法来将其转换为 null 值。
阅读全文