嗨,我是Java的新手,正在尝试收集部分,我有一个简单的查询
我说员工对象有两个数组列表

class Employee
{
    private int emp_id;
    private String name;
    private List<String> mobile_numbers;

    //.....getters and setters
}

listAlistB具有以下数据
    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));

其中listOfMobileNumbersList<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);

09-11 17:46