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

Posted

技术标签:

【中文标题】将arraylists1和arraylist2之间相等的自定义对象移除到arraylist1中【英文标题】:Remove the equal custom objects between arraylists1 and arraylist2 into arraylist1 【发布时间】:2019-04-09 17:48:06 【问题描述】:

我有 2 个数组列表,列表 1 和列表 2。它们都可以有相同的自定义对象。说员工类对象,它有 2 个属性,即 empId 和 empName。

List1 和 List2 可以有一些相等的对象。我的目标是将arraylist1和arraylist2中相等的对象删除到-> arraylist1中。

我已经尝试了下面的 sn-p,但是,我正在寻找一种在时间复杂度和空间复杂度方面有效的解决方案/算法。

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

这样可以吗,还是我们有更好的解决方案来使用 java 8 实现这一点?谢谢你的帮助。

【问题讨论】:

"remove into" 很难理解。我想你的意思是你想用list1list2的交集替换list1。所以如果list1=[1,2,3,4]list2=[2,4,9],那么最后是list1=[2,4]。对吗? 或者您是否希望list1 包含list2 的项目?你真的需要澄清你的问题。 我希望 list1 包含不在列表 2 中的项目。 【参考方案1】:

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

list1.removeIf(list2::contains);

【讨论】:

以上是关于将arraylists1和arraylist2之间相等的自定义对象移除到arraylist1中的主要内容,如果未能解决你的问题,请参考以下文章

ArrayList集合

ArrayList集合

ArrayList集合

Android Studio ListView 项目重力

Java Arrays.asList

Java 集合框架List 的使用