美文网首页
Java两种for循环的比较

Java两种for循环的比较

作者: detry | 来源:发表于2015-07-05 11:25 被阅读2855次

    最近在思考一个问题,公司里很多人写代码,都是用增强型的for循环,就是for(:),这种格式的代码,我一般用的是for(;;***)这种格式的,今天试着去比较了一下这两种的区别。

    总的来说,如果用数组实现的,那最好用普通for循环,因为下标索引速度更快。增强型的for循环,其实是用iterator迭代器来做的,迭代器适合链表格式的存储结构。

    所以,公司里很多人的代码都不规范,或者没有考虑效率问题,只是单纯的完成系统功能,这是很不负责任的做法。为一个公司做事,就要把代码优化到最好,比如用普通型for循环,我们可以先在第一步算出集合的大小,这样就省去了每次都要计算集合大小。

    ** int size =arraylist.size(); for(int i=0;i<size;i++)**
    这样做,就提高了代码的效率了。


    写了一段代码来印证自己的理论:

        package com.netease.corp; 
        import java.util.ArrayList;
        import java.util.LinkedList;
        import java.util.List;
    
       public class ForIterator {
       private static long MAX_NUMBER=100000;
    
        public static void main(String[] args) {
        List<Integer> linkedList=new LinkedList<Integer>();
        List<Integer> arrayList=new ArrayList<Integer>();
        for(int i=0;i<MAX_NUMBER;i++){   //给两个list赋值
            linkedList.add(100);
            arrayList.add(100);
        }
        getForCirculationTime(linkedList);
        getForCirculationTime(arrayList);
       }
    
    
    /**
     * 方法功能:获取两种for循环的时间
     * @param lists
     */
    public static void getForCirculationTime(List<Integer> lists){
        long starTime=System.currentTimeMillis();
        int n=0;
        int size=lists.size();
        for(int i=0;i<size;i++){
            n=lists.get(i);
        }
        Class s =lists.getClass();   //获取class的名
        String name=s.getName();
        System.out.println(s+"普通for循环 调用get方法花的时间:"+(System.currentTimeMillis()-starTime));
        
        starTime=System.currentTimeMillis();
        for(int  in:lists){
            n=in;
        }
        System.out.println(s+"增强型的for循环get方法花的时间:"+(System.currentTimeMillis()-starTime));        
        System.out.println();
        }
    }
    
    捕获.PNG

    相关文章

      网友评论

          本文标题:Java两种for循环的比较

          本文链接:https://www.haomeiwen.com/subject/gbeyqttx.html