gpt4 book ai didi

java - 在 java 中从 arraylist 中查找丢失的项目

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:57:06 24 4
gpt4 key购买 nike

您好,我是 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 和 Values 这是 List<String> .

字段出现 'n' 次,每次与该字段关联的值都会不同。

例如:字段号=18值=["A"];

字段号=18值=[“B”];等等...

我使用的员工 ID 仅用于说明目的,在其中覆盖等号和哈希码是有意义的。

最佳答案

您可以使用 boolean removeAll(Collection<?> c) 方法。

请注意,此方法修改了 List在其上调用它。如果您保留原件 List完好无损,那么您必须先复制列表,然后复制副本上的方法。

例如

List<Employee> additionalDataInListA = new ArrayList<Employee>(listA);
additionalDataInListA.removeAll(listB);

关于java - 在 java 中从 arraylist 中查找丢失的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17025859/

24 4 0