【发布时间】:2016-09-19 21:22:15
【问题描述】:
在 Java (7,8) 中,从另一个 Arraylist 中消除 integer 元素的最佳性能方法是什么。所有元素在第一个和第二个列表中都是唯一的。
目前我知道API方法removeall并这样使用:
tempList.removeAll(tempList2);
当我使用超过 10000 个元素的数组列表操作时出现问题。例如,当我删除 65000 个元素时,延迟似乎约为 2 秒。但我需要使用超过 1000000 个元素的更大列表。
这个问题的策略是什么?
也许新的 Stream API 应该可以解决它?
【问题讨论】:
-
将 tempList2 设为 HashSet,您可能会看到性能显着提升。
-
您是否考虑过先对两个列表进行排序,然后简单地遍历第一个列表(您要从中删除项目的那个)?编辑:基本上是@Eran 在下面提出的。