for循环和foreach循环效率对比
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时,程序直接卡死。