【问题标题】:Remove the equal custom objects between arraylists1 and arraylist2 into arraylist1将arraylists1和arraylist2之间相等的自定义对象移除到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 中的项目。

标签: algorithm data-structures java-8 time-complexity space-complexity


【解决方案1】:

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

list1.removeIf(list2::contains);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 2021-01-17
    • 1970-01-01
    相关资源
    最近更新 更多