本文共 1668 字,大约阅读时间需要 5 分钟。
大家好,我是雄雄,好久不介绍一下我,就被大家淡忘了……
我们都知道,遍历集合的方式最常用的有两种,一种是使用下标的方式遍历,第二种便是使用foreach遍历,代码分别如下:
使用下标的方法:
public static void testGetIndex(){ int num = 5; //声明集合 Listlists = new ArrayList (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; //声明集合 Listlists = new ArrayList (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; Listscore = new ArrayList (num); //随机生成分数赋值到集合中 for(int i= 0;i
注意看avg的方法,我们先用foreach的方法计算平均分,结果如下:
public static int avgForeach(Listscore){ int sum = 0; for(int i : score){ sum+=i; } return sum/score.size(); }
接下来我们使用下标的方法计算平均分,结果如下:
public static int avgIndex(Listscore){ int sum = 0; for(int i=0;i
可以看得出来,使用下标遍历的方法要比使用foreach遍历的方法要快许多
我们仅仅只是统计平均分,就相差46ms,如果有别的比如加权平均值、补充平均值等,花费时间会更长。
需要注意的是,在数据量小的情况下,无论哪种方式,性能差异不是很大!
案例灵感来自:《编写高质量代码:改善java程序的151个建议》
作者:秦小波
往期精彩
支持作者
赞赏就不用啦,生活都不易,右下角的“在看/赞”点一下,如果感觉文章不错,记得分享到朋友圈让更多人知道!
点分享
点点赞
点在看
转载地址:http://fvktz.baihongyu.com/