java - 使用 java8 从两个 java 列表中获取唯一的用户定义对象

标签 java collections java-stream

我有一个名为 Employee 的用户定义对象,如下所示,并且有两个包含 Employee 对象的不同列表。

在两个不同的列表中,我需要根据对象中的名称字段找出唯一的对象。 最终列表应仅包含一个名称为c的对象。

请建议我如何使用 java 8 来做到这一点?

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

class Employee{
    private String name;
    private String age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }   
}


public class UniqueObjects {

    public static void main(String[] args) {
        List<Employee> empOneList= new ArrayList<Employee>();
        List<Employee> empTwoList= new ArrayList<Employee>();

        Employee empOne= new Employee();        
        empOne.setName("a");
        empOne.setAge("23");
        empOneList.add(empOne);

        Employee emptwo= new Employee();        
        emptwo.setName("b");
        emptwo.setAge("24");
        empOneList.add(emptwo);

        Employee em= new Employee();
        em.setName("a");
        em.setAge("23");
        empTwoList.add(em);

        Employee emp1= new Employee();
        emp1.setName("d");
        emp1.setAge("24");
        empTwoList.add(emp1);    
    }
}

最佳答案

我认为您的问题是如何在两个列表中的任何一个中找到具有给定姓名的单个员工。如果是这种情况,那么最简单的事情就是流式传输两个列表并筛选唯一的员工:

Optional<Employee> employee = Stream.concat(list1.stream(), list2.stream())
    .filter(e -> e.getName().equals(name)).findAny();

如果您想要两个列表中具有该名称的对象,则:

List<Employee> employees = Stream.concat(list1.stream(), list2.stream))
    .filter(e -> e.getName().equals(name)).collect(Collectors.toList());

关于java - 使用 java8 从两个 java 列表中获取唯一的用户定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47427762/

相关文章:

java - 如何保存微调器数据和选定的单选按钮保存到 mysql 数据库?

java - 通过 apache POI 创建文件时出现错误 "Your InputStream was neither an OLE2 stream, nor an OOXML stream"

.net - .NET 中的有序集合和无序集合有什么区别

java - 如何使用 Java Streams API 将 Map 列表与 Lists 值合并?

java - 如何旋转由旋转的各个部分聚合而成的形状?

来自终端奇怪行为的 Java 输入

java - 如何最优雅地遍历并行集合?

java - 在 ArrayList 中查找具有相同 String 成员的自定义对象

java - Stream.skip 行为与无序终端操作

带有 ForEach 迭代问题的 Java Stream