可以使用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的值。

注意,minIdmaxIdOptional类型的,因为列表可能为空。您可以使用orElse()方法来指定默认值,在列表为空时返回该默认值。

Java Stream 一次循环获取对象集合的最大值和最小值 ID 属性

原文地址: https://www.cveoy.top/t/topic/o2is 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录