java for语句和foreach语句的哪一个比较耗时,哪一个效率比较高。
对不同类型的列表就会有不同的表现:
对ArrayList列表for语句和foreach语句差别不大,因为ArrayList数组实现的列表。
对LinkedList列表for语句表现耗时很多,foreach语句的效率就比for语句效率快2500倍。因为LinkedList是链表的的列表。
例子:
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
public class test {
public static void main(String[] args){
ArrayList<Integer> alist = new ArrayList<Integer>();
LinkedList<Integer> linkList = new LinkedList<Integer>();
for (int i =0;i<100000;i++){
alist.add(i);
linkList.add(i);
}
long timeArrForStart =System.currentTimeMillis();
for (int index =0;index<100000;index++){
int test = alist.get(index);
}
long timeArrForEnd =System.currentTimeMillis();
System.out.println("for 语句的执行ArrayList10万次的时间:"+(timeArrForEnd-timeArrForStart)+"ms");
long timelinkForStart =System.currentTimeMillis();
for (int index =0;index<100000;index++){
int test = linkList.get(index);
}
long timelinkForend =System.currentTimeMillis();
System.out.println("for 语句的执行linkList10万次的时间:"+(timelinkForend-timelinkForStart)+"ms");
long timeArrForeachStart =System.currentTimeMillis();
for(int index:alist){
int test =index;
}
long timeArrForeachEnd =System.currentTimeMillis();
System.out.println("foreach 语句的执行ArrayList10万次的时间:"+(timeArrForeachEnd-timeArrForeachStart)+"ms");
long timeLinkForeachStart =System.currentTimeMillis();
for(int index:linkList){
int test =index;
}
long timelinkForeachStart =System.currentTimeMillis();
System.out.println("foreach 语句的执行linkList10万次的时间:"+(timelinkForeachStart-timeLinkForeachStart)+"ms");
}
}
结果:
for 语句的执行ArrayList10万次的时间:5ms
for 语句的执行linkList10万次的时间:15220ms
foreach 语句的执行ArrayList10万次的时间:7ms
foreach 语句的执行linkList10万次的时间:6ms