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時,程序直接卡死。