Java Stream 一次循环获取对象集合的最大值和最小值 ID 属性
可以使用Collectors.minBy()和Collectors.maxBy()方法来获取最小值和最大值。以下是一个示例代码:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<MyObject> objects = new ArrayList<>();
objects.add(new MyObject(1, 'Object 1'));
objects.add(new MyObject(2, 'Object 2'));
objects.add(new MyObject(3, 'Object 3'));
objects.add(new MyObject(4, 'Object 4'));
objects.add(new MyObject(5, 'Object 5'));
Optional<Integer> minId = objects.stream()
.map(MyObject::getId)
.collect(Collectors.minBy(Comparator.naturalOrder()));
Optional<Integer> maxId = objects.stream()
.map(MyObject::getId)
.collect(Collectors.maxBy(Comparator.naturalOrder()));
System.out.println('Min ID: ' + minId.orElse(-1));
System.out.println('Max ID: ' + maxId.orElse(-1));
}
}
class MyObject {
private int id;
private String name;
public MyObject(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
在上面的代码中,我们首先创建了一个包含MyObject对象的列表。然后,我们使用流的map()方法将列表中的每个对象转换为其ID属性的流。接下来,我们使用Collectors.minBy()和Collectors.maxBy()方法来获取最小和最大的ID值。最后,我们打印出最小和最大ID的值。
注意,minId和maxId是Optional类型的,因为列表可能为空。您可以使用orElse()方法来指定默认值,在列表为空时返回该默认值。
原文地址: https://www.cveoy.top/t/topic/o2is 著作权归作者所有。请勿转载和采集!