嗨,我是Java的新手,正在尝试收集部分,我有一个简单的查询
我说员工对象有两个数组列表
class Employee
{
private int emp_id;
private String name;
private List<String> mobile_numbers;
//.....getters and setters
}
说
listA
和listB
具有以下数据 List<Employee> listA = new ArrayList<Employee>();
List<Employee> listB = new ArrayList<Employee>();
listA.add(new Employee("101", "E1", listOfMobileNumbers));
listA.add(new Employee("102", "E2", listOfMobileNumbers1));
listA.add(new Employee("103", "E3", listOfMobileNumbers2));
listA.add(new Employee("104", "E4", listOfMobileNumber4));
listA.add(new Employee("105", "E5", listOfMobileNumbers5));
listB.add(new Employee("101", "E1", listOfMobileNumbers1));
listB.add(new Employee("102", "E2", listOfMobileNumbers2));
listB.add(new Employee("106", "E6", listOfMobileNumber6));
listB.add(new Employee("107", "E7", listOfMobileNumber7));
listB.add(new Employee("108", "E8", listOfMobileNumbers8));
其中
listOfMobileNumbers
是List<String>
现在,我想从个人列表中找到其他元素。
即
List<Employee> additionalDataInListA = new ArrayList<Employee>();
// this list should contain 103, 104 and 105
List<Employee> additionalDataInListB= new ArrayList<Employee>();
// this list should contain 106, 107 and 108
我该如何实现?
感谢您的帮助。
编辑:
我不想使用任何内部函数,我想通过编写一些手动函数类型的比较函数来实现它。
我也不能覆盖equals函数,因为在我的用例中,我有 FieldNo (它是int)和值,它是一个
List<String>
。字段的出现次数为n次,并且每次与该字段关联的值都会不同。
例如 :
FieldNo = 18
值= [“A”];
FieldNo = 18
值= [“B”];
等等...
我使用的员工ID仅用于说明目的,在此有意义的是重写equals和哈希码。
最佳答案
您可以使用 boolean removeAll(Collection<?> c)
方法。
请注意,此方法会修改您在其上调用的List
。如果您保留原始的List
不变,则必须先复制列表,然后复制该方法。
例如
List<Employee> additionalDataInListA = new ArrayList<Employee>(listA);
additionalDataInListA.removeAll(listB);