首页
学习
活动
专区
工具
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'}]

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

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

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

相关·内容

  • 【Java学习笔记之十六】浅谈Java中的继承与多态

    1、  什么是继承,继承的特点? 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。 特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的特征和行为,而子类除了具有父类的特征和行为,还具有一些自己特殊的特征和行为。 在继承关系中。父类和子类需要满足is-a的关系。子类是父类。 表示父类和子类的术语:父类和子类、超类和子类、基类和派生类,他们表示的是同一个意思。 2、  为什么需要继承?什么时候应该继承? 使用继承可以有效实现代码复用,避免重

    07

    Java编程基础阶段笔记 day 07 面向对象编程(上)

    1.创建一个类,并在类中提供必要的属性和方法 2.由类派生出对象。(创建对象) 3.调用对象中的属性和方法。(对象名.属性名/方法名) //创建一个类 class Person{ //属性           String name; int age; char sex; //方法 public void run(){                    System.out.println(name + "跑起来");           } public void say(){                    System.out.println(name + "今年" + age);           } }     // main 方法中                    Person person = new Person(); //调用属性 : 对象名.属性名 person.name = "王庆港"; //给属性赋值 person.age = 23; //获取属性的值                    String name = person.name;                    System.out.println("name=" + name); //调用方法 :对象名.方法名 person.run(); person.say();

    00
    领券