我有一个名为 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/