长宁网站建设优化seo,网站建设三站合一微信小程序,昆山市做网站的公司,最新公司注册流程大家好#xff0c;我是雄雄#xff0c;好久不介绍一下我#xff0c;就被大家淡忘了……我们都知道#xff0c;遍历集合的方式最常用的有两种#xff0c;一种是使用下标的方式遍历#xff0c;第二种便是使用foreach遍历#xff0c;代码分别如下#xff1a;使用下标的方法… 大家好我是雄雄好久不介绍一下我就被大家淡忘了……我们都知道遍历集合的方式最常用的有两种一种是使用下标的方式遍历第二种便是使用foreach遍历代码分别如下使用下标的方法public static void testGetIndex(){int num 5;//声明集合ListInteger lists new ArrayListInteger(num);//给集合中赋值(0-150之间的随机数)for (int i 0; i num; i) {lists.add(new Random().nextInt(150));}//使用下标遍历for (int i 0; i lists.size(); i) {System.out.print(lists.get(i) );}}结果如下使用foreach的方法public static void testForeach(){int num 5;//声明集合ListInteger lists new ArrayListInteger(num);//给集合中赋值(0-150之间的随机数)for (int i 0; i num; i) {lists.add(new Random().nextInt(150));}//使用下标遍历for (int i :lists) {System.out.print(i );}}结果如下我们可以看到这种方法在表面看起来区别不是很大甚至可以说foreach遍历的方法要比下标遍历的方式还要简单。那如果我们从另一角度——比如性能方面来看它两的区别呢谁又更胜一筹下面我们来结合案例具体分析一下两种方法在性能方面的差异某市有80000000学生在某一次市内组织的考试后接上面指示需要对本市8千万学生的成绩进行统计并计算平均分。案例很简单无外乎就是将8千万学生的成绩加起来除以8千万代码如下public static void test1(){int num 80*100000;ListInteger score new ArrayListInteger(num);//随机生成分数赋值到集合中for(int i 0;inum;i){score.add(new Random().nextInt(150));}//开始记录时间long strat System.currentTimeMillis();System.out.println(平均分是avgForeach(score));long end System.currentTimeMillis();System.out.println(执行时间是(end-strat)ms);}注意看avg的方法我们先用foreach的方法计算平均分结果如下public static int avgForeach(ListInteger score){int sum 0;for(int i : score){sumi;}return sum/score.size();}接下来我们使用下标的方法计算平均分结果如下public static int avgIndex(ListInteger score){int sum 0;for(int i0;iscore.size();i){sumscore.get(i);}return sum/score.size();}可以看得出来使用下标遍历的方法要比使用foreach遍历的方法要快许多我们仅仅只是统计平均分就相差46ms如果有别的比如加权平均值、补充平均值等花费时间会更长。需要注意的是在数据量小的情况下无论哪种方式性能差异不是很大案例灵感来自《编写高质量代码改善java程序的151个建议》作者秦小波往期精彩asList方法产生的List对象不可更改2020-09-29 避开基本类型数组转换列表陷阱2020-09-28 java中最值的求法你可能忽略了这种方法了2020-09-27 在明确的场景下为集合指定初始容量2020-09-26 警惕数组的浅拷贝2020-09-25 若有必要使用变长数组2020-09-24 支持作者赞赏就不用啦生活都不易右下角的“在看/赞”点一下如果感觉文章不错记得分享到朋友圈让更多人知道点分享点点赞点在看