优化ArrayList.removeAll

时间:2011-07-24 00:39:30

标签: java arraylist removeall

很多人都说ArrayList.removeAll对于大尺寸阵列来说真的很慢。

这个article为ArrayList.removeAll速度提供了两个优化的解决方案,但需要在类本身中实现它们,并且不能在外部用作修复。

有没有办法应用这种修复,而不是复制ArrayList源代码并使用我自己的版本?

编辑:我想我应该添加我对此的需求,因为如果没有ArrayList.removeAll,可能有办法做我想做的事。

我有两个每个70,000 longs左右的列表。它们几乎完全相同,但是一个列表中有第二个列表没有的更多数字,我想找到它们。我知道找到它们的唯一方法是first.removeAll(second)找到差异。还有另一种方式吗?

2 个答案:

答案 0 :(得分:9)

如何使用具有更好删除时间的数据结构,例如HashSet或TreeSet?因此使用arraylist的主要原因是访问记录的快速访问时间O(1)。但是,如果你想设置差异,那么也许你应该使用集合。只是一个想法。

答案 1 :(得分:1)

您可以创建ArrayList的子类来优化该方法(可能还有其他方法)。