可以使用Java 8的Stream API来实现按照对象中的字段A作为key,对应元素的下标作为value得到一个map集合的操作。以下是一种实现方式:

import java.util.*;
import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        List<MyObject> list = new ArrayList<>();
        list.add(new MyObject("A", 1));
        list.add(new MyObject("B", 2));
        list.add(new MyObject("A", 3));
        list.add(new MyObject("C", 4));
        list.add(new MyObject("B", 5));

        Map<String, Integer> map = list.stream()
                .collect(Collectors.toMap(MyObject::getFieldA, list::indexOf, (a, b) -> a));

        System.out.println(map);
    }
}

class MyObject {
    private String fieldA;
    private int index;

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

    public String getFieldA() {
        return fieldA;
    }

    public int getIndex() {
        return index;
    }
}

在上面的代码中,我们首先创建了一个包含MyObject对象的列表list。然后使用Stream的collect方法来将列表转换为Map。在这个方法中,我们使用MyObject::getFieldA作为key提取器,将字段A的值作为Map的key。然后使用list::indexOf作为value提取器,将元素的下标作为Map的value。最后,我们使用(a, b) -> a作为合并器来解决重复key的冲突,保留第一个取到的下标。

运行以上代码,将输出{A=0, B=1, C=3},符合预期的结果

Java中有一个集合需要按照对象中的字段A作为key对应元素的下标作为value得到一个map集合若是有重复的key则忽略只保存第一个取到的下标使用stream来实现

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

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