如何高效地基于关键字比较对象的ArrayList。
我有一个包含personDetails和departmentDetails对象的数组。
在这里,我试图找出两个对象之间基于属性deptCode的差异。
以下是我的尝试。
我有一个包含personDetails和departmentDetails对象的数组。
在这里,我试图找出两个对象之间基于属性deptCode的差异。
以下是我的尝试。
package com.education;
import java.util.*;
import java.util.stream.Collectors;
public class educationMain {
public static void main(String[] args) {
List<person> list=new ArrayList<person>();
person l1 = new person(1,"Samual",100,"Sales","Business");
person l2 = new person(2,"Alex",100,"Sales","Business");
person l3 = new person(3,"Bob",101,"Engineering","Technology");
person l4 = new person(4,"Michel",101,"Engineering","Technology");
person l5 = new person(5,"Ryan",102,"PR","Services");
person l6 = new person(6,"Horward",103,"Leadership","Managmnet");
person l7 = new person(7,"Cyna",104,"HR","Human Resource");
list.add(l1);
list.add(l2);
list.add(l3);
list.add(l4);
list.add(l5);
list.add(l6);
list.add(l7);
List<department> depList = new ArrayList<department>();
department d1 = new department(100, "Sales","Business");
department d2 = new department(101, "Engineering","Technology");
department d3 = new department(102, "PR","Services");
depList.add(d1);
depList.add(d2);
depList.add(d3);
List<person> listC = new ArrayList<person>();
for(person p : list) {
boolean flag = false;
for (department d:depList) {
if(p.deptCode == d.deptCode) {
flag = false;
break;
}else {
flag = true;
}
}
if(flag == true) {
listC.add(p);
}
}
for(person b:listC){
System.out.println(b.personId+" "+b.name+" "+b.deptCode+" "+b.parentDept+" "+b.deptName);
}
}
}
现在我能打印出我想要的内容。但是我使用了两个for循环。有没有人可以帮助我优化我的代码,因为我在这里使用了两个循环。我想尝试根据某些条件过滤掉delta的代码。
在Collection中我看到set会做到这一点,但是我无法写出来。有没有人可以帮助我优化效率。
输出:
6 Horward 103 Leadership Managmnet
7 Cyna 104 HR Human Resource
list
中的person
对象,其deptCode
与所有department
的deptCode
都不匹配?这是算法的意图吗? - jason44107