要将对象集合中的两个字段分别作为key和value组成map,可以使用Java8的Stream API和Collectors.toMap()方法来实现。

假设有一个对象类Person,有两个字段name和age,现在有一个Person对象的集合List persons。我们可以将name作为key,age作为value,组成一个Map<String, Integer>:

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

public class Main {
    public static void main(String[] args) {
        List<Person> persons = List.of(
                new Person("John", 25),
                new Person("Jane", 30),
                new Person("Mike", 35)
        );

        Map<String, Integer> map = persons.stream()
                .collect(Collectors.toMap(Person::getName, Person::getAge));

        System.out.println(map);
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

输出结果为:

{John=25, Jane=30, Mike=35}

在上述代码中,我们使用Stream的collect()方法和Collectors.toMap()方法将Person对象的name字段作为key,age字段作为value,最终得到一个Map对象。Person::getName和Person::getAge 是方法引用,表示获取Person对象的name和age字段的方法。

注意,如果集合中存在重复的key,则会抛出一个IllegalStateException异常。如果我们希望在遇到重复key时进行合并操作,可以使用Collectors.toMap()方法的第三个参数来指定合并逻辑。

Java8将对象集合中的两个字段分别作为key和value组成map

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

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