ArrayList与LinkedList

46 阅读1分钟

访问速度, 占小狼博客 将操作随机访问列表的最佳算法(如 ArrayList)应用到连续访问列表(如 LinkedList)时,可产生二次项的行为。如果将某个算法应用到连续访问列表,那么在应用可能提供较差性能的算法前,鼓励使用一般的列表算法检查给定列表是否为此接口的一个 instanceof,如果需要保证可接受的性能,还可以更改其行为。

现在已经认识到,随机和连续访问之间的区别通常是模糊的。例如,如果列表很大时,某些 List 实现提供渐进的线性访问时间,但实际上是固定的访问时间。这样的 List 实现通常应该实现此接口。实际经验证明,如果是下列情况,则 List 实现应该实现此接口,即对于典型的类实例而言,此循环:

 for (int i=0, n=list.size(); i < n; i++)
     list.get(i);

的运行速度要快于以下循环: for (Iterator i=list.iterator(); i.hasNext(); ) i.next(); 遍历方式的选择参考Java核心技术迭代器原理

参考极客时间算法篇写ArrayList

juejin.im/post/5a2613…