通过普通for循环随机访问的方式执行时间远远大于迭代器访问方式,这个我们可以理解,在前面的get(int index)方法中已经有过说明,那么为什么增强for循环能做到迭代器遍��差不多的效率?
通过反编译工具后得到如下代码
public static void listByStrengThenFor(LinkedList<Integer> list) { long start = System.currentTimeMillis(); Integer localInteger; for (Iterator localIterator = list.iterator(); localIterator.hasNext(); localInteger = (Integer)localIterator.next()) {} long interval = System.currentTimeMillis() - start; System.out.println("listByStrengThenFor:" + interval + " ms"); }很明显了,增强for循环遍历时也调用了迭代器Iterator,不过多了一个赋值的过程。
还有类似于pollFirst(),pollLast()取值后删除的方法也能达到部分的遍历效果。
三. 总结本文基于Java8从定义一个LinkList入手,逐步展开,从源码角度分析LinkedList双向链表的结构是如何构建的,同时针对其常用方法进行分析,包括get,add,remove以及常用的遍历方法,并简单的说明了它的插入、删除操作为何相对高效,而取值操作性能相对较低,若有不对之处,请批评指正,望共同进步,谢谢!