我有 2 个列表:
列表1:
对象1(Empno1,Empname1,Salary1)
列表2:
对象2(Empno2,Empname2,Salary2)Object3(Empno3,Empname3,Salary3)
鉴于 List1 的大小与 List2 不同。
我想迭代List1和List2,如果List1对象中的Empno
与List2对象的Empno
相同,那么我们必须验证List1对象中的Empname
与List2对象的Empname
相同
这是使用旧java的代码:
boolean flag=false;
for(Object1 obj1:list1) {
for(Object2 obj2:list2) {
if(obj1.getEmpno()==obj2.getEmpno()) {
if(obj1.getEmpname().equals(obj2. getEmpname())){
flag=true;
}
}
}
}
这是使用 java8 实现此目的的最佳方法
最佳答案
查找另一个列表中是否存在一个确切对象的一种可能的解决方案是:
boolean b = list1.parallelStream().anyMatch(s -> list2.contains(s));
正如 @Kris 也提到的,它需要为您的 Object 类实现 equal 方法才能像这样重写:
class Object1 {
int empNo;
String empName;
@Override
public boolean equals(Object obj) {
return ((Object2)obj).empNo == this.empNo &&
((Object2)obj).empName.equalsIgnoreCase(this.empName);
}
@Override
public int hashCode() {
int result = 17;
result = 31 * result + Integer.valueOf(empNo).hashCode();
result = 31 * result + this.empName.hashCode();
return result;
}
}
17 31 哈希码的想法来自Effective Java 书籍,有关它的更多信息,请关注:https://stackoverflow.com/a/299748/2137378
关于java - 在 java 8 中迭代并验证两个对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57720604/