java链表的get方法遍历VS使用迭代器遍历

来源:互联网 发布:上色软件 编辑:程序博客网 时间:2024/04/30 08:59

    无论何种集合,应当允许用户以某种方式遍历集合,而不需要知道对象在集合中是如何表示及存储的,java集合框架为各种数据结构的集合,比如链表、散列表等都提供了迭代器。

    某些集合根据其数据存储结构和所具有的操作也会提供返回数据的方法,例如LinkedList类中的get(int index)方法返回当前链表中第index个节点节点的对象。显然链表的get方法遍历比顺序表的get方法的速度慢。java推荐使用集合提供的迭代器,而不是集合本身来遍历其中的对象。因为迭代器遍历集合的方法在找到集合中的一个对象的同时,也得到带遍历的后继对象的引用,因此迭代器可以快速地遍历集合。

下面展示java链表的get方法遍历VS使用迭代器遍历的耗时对比

package test5;import java.util.LinkedList;import java.util.*;public class Main {public static void main(String[] args) {LinkedList<Integer> list=new LinkedList<Integer>();for(int i=0;i<65536;i++)list.add(new Integer(i));Iterator<Integer> iter=list.iterator();long st=System.currentTimeMillis();Integer t;for(int i=9;i<65536;i++)t=list.get(i);long et=System.currentTimeMillis();System.out.println("get方法遍历耗时:"+(et-st)+"ms");st=System.currentTimeMillis();while(iter.hasNext())t=iter.next();et=System.currentTimeMillis();System.out.println("迭代器遍历耗时:"+(et-st)+"ms");}}

结果:

get方法遍历耗时:1623ms
迭代器遍历耗时:7ms

显而易见,使用迭代器遍历占据明显优势。

0 0