您可以使用Java中的Stream来实现获取字段A不同的对象的下标集合,并忽略具有相同字段A的对象,只取第一个获取到的对象。

假设您有一个对象列表List,其中T是包含字段A的对象类型。您可以按照以下步骤实现:

  1. 使用IntStream.range()方法创建一个表示索引的IntStream。
  2. 使用filter()方法过滤掉具有相同字段A的对象。
  3. 使用findFirst()方法获取第一个满足条件的对象。
  4. 使用orElse()方法指定如果找不到满足条件的对象时返回的默认值。
  5. 使用collect()方法将IntStream转换为List类型的集合。

下面是一个示例代码:

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

public class Main {
    public static void main(String[] args) {
        List<MyObject> objects = new ArrayList<>();
        objects.add(new MyObject("A"));
        objects.add(new MyObject("B"));
        objects.add(new MyObject("A"));
        objects.add(new MyObject("C"));

        List<Integer> indexes = IntStream.range(0, objects.size())
                .filter(i -> {
                    String fieldValue = objects.get(i).getFieldA();
                    return objects.stream()
                            .noneMatch(obj -> obj.getFieldA().equals(fieldValue));
                })
                .findFirst()
                .stream()
                .collect(Collectors.toList());

        System.out.println("Indexes: " + indexes);
    }

    static class MyObject {
        private String fieldA;

        public MyObject(String fieldA) {
            this.fieldA = fieldA;
        }

        public String getFieldA() {
            return fieldA;
        }
    }
}

在上面的示例中,我们创建了一个包含四个MyObject对象的列表。使用Stream操作,我们过滤掉具有相同字段A的对象,并获取第一个满足条件的对象的索引。最后,我们将索引集合打印出来。

输出结果为:Indexes: [0, 1, 3],表示第一个满足条件的不同字段A的对象的索引集合为0、1和3

Java中有一个集合对象中有一个字段为A使用stream来实现获取A不同的对象的下标集合若是有相同字段A的则忽略只取第一个获取的

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

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