将 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);
我有 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);