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

 

posted @ 2018-07-30 14:37  猴子特种兵  阅读(2229)  评论(0编辑  收藏  举报