Java Stream 一次循环获取对象最大值和最小值ID属性
要一次循环获取对象中的最大值和最小值的 ID 属性,可以使用 Java Stream 的 reduce 操作。首先,需要将对象的 ID 属性提取出来,然后使用 reduce 操作同时获取最大值和最小值。
假设有一个名为 objects 的 List,其中包含了对象,每个对象都有一个 ID 属性。可以使用以下代码来实现:
List<Object> objects = ...; // 假设有一个名为 objects 的 List
Optional<Integer> minId = objects.stream()
.map(obj -> obj.getId()) // 提取 ID 属性
.reduce(Integer::min); // 获取最小值
Optional<Integer> maxId = objects.stream()
.map(obj -> obj.getId()) // 提取 ID 属性
.reduce(Integer::max); // 获取最大值
// 检查最小值和最大值是否存在
if (minId.isPresent() && maxId.isPresent()) {
System.out.println('最小值的 ID 属性: ' + minId.get());
System.out.println('最大值的 ID 属性: ' + maxId.get());
}
上述代码首先使用 map 操作将对象转换为 ID 属性,然后使用 reduce 操作获取最小值和最大值。注意,reduce 操作返回的是一个 Optional 对象,因为对象列表可能为空,导致最小值和最大值不存在。因此,在输出结果之前,需要使用 isPresent() 方法检查最小值和最大值是否存在。
原文地址: https://www.cveoy.top/t/topic/o2iM 著作权归作者所有。请勿转载和采集!