package com.baoxing.test;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class TestForEach {
public static void main(String[] args) {
//實例化arrayList
List<Integer> arrayList = new ArrayList<Integer>();
//實例化linkList
List<Integer> linkList = new LinkedList<Integer>();
//插入10萬條數據
for (int i = 0; i < 100000; i++) {
arrayList.add(i);
linkList.add(i);
}
int array = 0;
//用for循環arrayList
long arrayForStartTime = System.currentTimeMillis();
for (int i = 0; i < arrayList.size(); i++) {
array = arrayList.get(i);
}
long arrayForEndTime = System.currentTimeMillis();
System.out.println("用for循環arrayList 10萬次花費時間:" + (arrayForEndTime - arrayForStartTime) + "毫秒");
//用foreach循環arrayList
long arrayForeachStartTime = System.currentTimeMillis();
for(Integer in : arrayList){
array = in;
}
long arrayForeachEndTime = System.currentTimeMillis();
System.out.println("用foreach循環arrayList 10萬次花費時間:" + (arrayForeachEndTime - arrayForeachStartTime ) + "毫秒");
//用for循環linkList
long linkForStartTime = System.currentTimeMillis();
int link = 0;
for (int i = 0; i < linkList.size(); i++) {
link = linkList.get(i);
}
long linkForEndTime = System.currentTimeMillis();
System.out.println("用for循環linkList 10萬次花費時間:" + (linkForEndTime - linkForStartTime) + "毫秒");
//用froeach循環linkList
long linkForeachStartTime = System.currentTimeMillis();
for(Integer in : linkList){
link = in;
}
long linkForeachEndTime = System.currentTimeMillis();
System.out.println("用foreach循環linkList 10萬次花費時間:" + (linkForeachEndTime - linkForeachStartTime ) + "毫秒");
}
}
用for循環arrayList 10萬次花費時間:7毫秒
用foreach循環arrayList 10萬次花費時間:14毫秒
用for循環linkList 10萬次花費時間:25095毫秒
用foreach循環linkList 10萬次花費時間:11毫秒
可以看出,循環ArrayList時,普通for循環比foreach循環花費的時間要少一點;循環LinkList時,普通for循環比foreach循環花費的時間要多很多。
當我將循環次數提升到一百萬次的時候,循環ArrayList,普通for循環還是比foreach要快一點;但是普通for循環在循環LinkList時,程序直接卡死。