很多人都说ArrayList.removeAll对于大型数组确实很慢。

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

除了复制ArrayList源代码并使用我自己的版本之外,是否有任何方法可以应用这种修复程序?

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

我每个人都有大约70,000 longs的两个列表。它们几乎是相同的,但是一个列表包含的数字更多,而第二个列表则没有,我想找到它们。我知道找到它们的唯一方法是执行first.removeAll(second)来找到它们之间的区别。还有另一种方法吗?

最佳答案

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

关于java - 优化ArrayList.removeAll,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6804238/

10-11 00:37