9

很多人都说ArrayList.removeAll大尺寸数组真的很慢。

本文针对 ArrayList.removeAll 速度提供了两种优化方案,但需要在类本身实现,不能在外部作为修复使用。

除了复制 ArrayList 源代码并使用我自己的版本之外,有没有办法应用这种修复?

编辑:我想我应该添加对此的需求,因为可能有一种方法可以在没有 ArrayList.removeAll 的情况下做我想做的事情。

我有两个列表70,000 longs。它们几乎相同,但一个列表有更多的数字,而第二个列表没有,我想找到它们。我知道找到它们的唯一方法就是first.removeAll(second)找到差异。还有其他方法吗?

4

2 回答 2

9

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

于 2011-07-24T02:35:00.450 回答
1

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

于 2011-07-24T00:48:48.703 回答