日期:2014-05-20  浏览次数:20667 次

java链表遍历耗时问题
import java.util.*;
class Student 
 { String name;
  int number;
  Student(String name,int number)
  { this.name=name;
this.number=number;  
  }
 }

public class TestIterator
{
public static void main(String[] args)
{ List list=new LinkedList();
for(int k=1;k<=22222;k++)
{ list.add(new Student("i am"+k,k));
}
Iterator iter=list.iterator();
  long time1=System.currentTimeMillis();
System.out.println(time1);
while(iter.hasNext())
{ Student te=(Student)iter.next();
 
}  
long time2=System.currentTimeMillis();
System.out.println(time2);
System.out.println("遍历链表用时:"+(time2-time1)+"毫秒");
time1=System.currentTimeMillis();
for(int i=0;i<list.size();i++)
{ Student te=(Student)list.get(i);
 
}  
time2=System.currentTimeMillis();
System.out.println("遍历链表用时:"+(time2-time1)+"毫秒");
}

}

上面的程序是比较get方法和Iterator对象遍历链表,这儿System.out.println(time1);中
输出long型数据“1573519246931“,为什么这儿的毫秒数高达十几位,虚拟机编译时不需要
这长的时间啊??

------解决方案--------------------
currentTimeMillis
public static long currentTimeMillis()返回以毫秒为单位的当前时间。注意,当返回值的时间单位是毫秒时,值的粒度取决于底层操作系统,并且粒度可能更大。例如,许多操作系统以几十毫秒为单位测量时间。 
请参阅 Date 类的描述,了解可能发生在“计算机时间”和协调世界时(UTC)之间的细微差异的讨论。 


返回:
当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。
另请参见:
Date

--------------------------------------------