使用 Java Stream 获取字段不同对象的下标集合

本文介绍使用 Java Stream 的 distinct()findFirst() 方法来实现获取字段 A 不同的对象的下标集合,并且只取第一个获取的对象的下标。

假设你有一个集合 List<MyObject>,其中 MyObject 类包含一个字段 A,你可以按照以下方式实现:

import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<MyObject> list = ...; // 假设你已经有一个集合List<MyObject>

        int index = list.stream()
                .mapToInt(list::indexOf) // 获取对象的下标
                .distinct() // 去除重复的下标
                .findFirst() // 获取第一个下标
                .orElse(-1); // 如果没有找到,则返回-1

        System.out.println('第一个获取到的不同对象的下标为:' + index);
    }
}

class MyObject {
    private int A;

    // 构造方法、getter和setter省略
}

在上面的例子中,我们使用 mapToInt() 方法将对象映射为它们在集合中的下标,然后使用 distinct() 方法去除重复的下标,再使用 findFirst() 方法获取第一个下标。如果没有找到不同的对象,findFirst() 方法将返回一个空的 Optional 对象,我们可以使用 orElse() 方法指定一个默认值(这里使用 -1)。

最后,我们打印输出第一个获取到的不同对象的下标。

Java Stream 获取字段不同对象的下标集合

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

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