首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在java 8中根据匹配条件从2个不同的对象列表中创建对象列表

在Java 8中,可以使用Stream API和Lambda表达式来根据匹配条件从两个不同的对象列表中创建对象列表。下面是一个示例代码:

代码语言:java
复制
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("Alice", 25));
        personList.add(new Person("Bob", 30));
        personList.add(new Person("Charlie", 35));

        List<Address> addressList = new ArrayList<>();
        addressList.add(new Address("Alice", "123 Street"));
        addressList.add(new Address("Bob", "456 Avenue"));
        addressList.add(new Address("Eve", "789 Road"));

        List<PersonAddress> personAddressList = createPersonAddressList(personList, addressList);
        System.out.println(personAddressList);
    }

    public static List<PersonAddress> createPersonAddressList(List<Person> personList, List<Address> addressList) {
        return personList.stream()
                .flatMap(person -> addressList.stream()
                        .filter(address -> person.getName().equals(address.getName()))
                        .map(address -> new PersonAddress(person.getName(), person.getAge(), address.getAddress())))
                .collect(Collectors.toList());
    }
}

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;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

class Address {
    private String name;
    private String address;

    public Address(String name, String address) {
        this.name = name;
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public String getAddress() {
        return address;
    }

    @Override
    public String toString() {
        return "Address{" +
                "name='" + name + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

class PersonAddress {
    private String name;
    private int age;
    private String address;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getAddress() {
        return address;
    }

    @Override
    public String toString() {
        return "PersonAddress{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

这段代码中,我们有两个类PersonAddress,分别表示人和地址。我们要根据两个对象列表personListaddressList中的匹配条件(姓名),创建一个新的对象列表personAddressList,其中包含匹配的姓名、年龄和地址。

createPersonAddressList方法中,我们使用Stream API和Lambda表达式来实现这个功能。首先,我们使用personList.stream()创建一个人的流,然后使用flatMap方法将每个人与地址列表进行匹配。在flatMap方法中,我们使用addressList.stream()创建地址的流,并使用filter方法过滤出与当前人的姓名匹配的地址。最后,我们使用map方法将匹配的姓名、年龄和地址转换为PersonAddress对象。最终,我们使用collect方法将所有匹配的PersonAddress对象收集到一个列表中。

运行上述代码,将输出以下结果:

代码语言:txt
复制
[PersonAddress{name='Alice', age=25, address='123 Street'}, PersonAddress{name='Bob', age=30, address='456 Avenue'}]

这个结果是根据匹配条件从两个不同的对象列表中创建的对象列表,其中包含了匹配的姓名、年龄和地址。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券