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
--------------------------------------------