将 arraylists1 和 arraylist2 之间相等的自定义对象移除到 arraylist1

Remove the equal custom objects between arraylists1 and arraylist2 into arraylist1

我有 2 个数组列表 list1 和 list 2。它们都可以有相同的自定义对象。假设员工 class 对象,它有 2 个属性,即 empId 和 empName。

List1 和 List2 可以有一些相同的对象。我的objective 是把arraylist1 和arraylist2 中相等的对象移到--> arraylist1 中。

我已经尝试了下面的代码片段,但是,我正在寻找一种在时间复杂度和 space 复杂度方面有效的 solution/algorithm。

list1.removeAll(list1.stream().filter((list2)::contains).collect(Collectors.toList()); 

这样可以吗?或者我们是否有更好的解决方案来使用 java 8 来实现此目的?谢谢你的帮助。

您可以使用 removeIf 进行一次遍历:

list1.removeIf(list2::contains);