将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" 很难理解。我想你的意思是你想用list1
和list2
的交集替换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中的主要内容,如果未能解决你的问题,请参考以下文章