假设我们有一个名为 'Person' 的类,其中有一个属性 'name',现在我们有两个 'Person' 对象的集合 'list1' 和 'list2',我们想要找到 'name' 属性相同的对象,并将 'list1' 中的对象替换为 'list2' 中的对象。我们可以使用 Java 8 中的 Stream 流来实现这个功能。

代码示例:

import java.util.ArrayList;
import java.util.List;

public class Person {
    private String name;

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

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

public class Main {
    public static void main(String[] args) {
        // 创建 list1 和 list2 集合
        List<Person> list1 = new ArrayList<>();
        list1.add(new Person("Tom"));
        list1.add(new Person("Jerry"));
        list1.add(new Person("Alice"));

        List<Person> list2 = new ArrayList<>();
        list2.add(new Person("Tom"));
        list2.add(new Person("Jerry"));
        list2.add(new Person("Bob"));

        // 使用 Stream 流进行匹配和替换
        list1 = list1.stream()
                .map(p1 -> list2.stream()
                        .filter(p2 -> p1.getName().equals(p2.getName())) // 匹配 name 属性相同的对象
                        .findFirst() // 找到第一个匹配的对象
                        .orElse(p1)) // 如果没有匹配的对象,则使用原来的对象
                .toList(); // 转换为 List

        System.out.println(list1); // 输出:[Person{name='Tom'}, Person{name='Jerry'}, Person{name='Bob'}]
    }
}

在上面的代码中,我们使用 Stream 流的 map 方法和 findFirst 方法进行匹配和替换。如果存在匹配的对象,则使用 findFirst 方法找到第一个匹配的对象进行替换,否则使用原来的对象。最后使用 toList 方法将流转换为 List 集合。

Java Stream 流:匹配两个集合中属性值相同的对象并替换

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

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