很多人都说ArrayList.removeAll在处理大型数组时非常慢。
此article为ArrayList.removeAll速度提供了两个优化的解决方案,但需要在类本身中实现它们,并且不能作为修复程序在外部使用。
除了复制ArrayList源代码并使用我自己的版本之外,有什么方法可以应用这种修复吗?
编辑:我想我应该添加我对此的需求,因为可能有一种方法可以在没有ArrayList.removeAll的情况下完成我想要的事情。
我有两个关于70,000 longs的列表。它们几乎是相同的,但是一个列表有更多的数字,而第二个列表没有,我想要找到它们。我知道找到它们的唯一方法是做first.removeAll(second)来找出区别。还有别的办法吗?
发布于 2011-07-24 10:35:00
如果使用删除时间更短的数据结构,比如HashSet或TreeSet呢?因此,使用arraylist的最大原因是访问记录的快速访问时间O(1)。但是如果你正在尝试设置不同,那么也许你应该使用集合。这只是个想法。
发布于 2011-07-24 08:48:49
您可以创建ArrayList的子类来优化该方法(可能还有其他方法)。
https://stackoverflow.com/questions/6804238
复制相似问题