for与foreach的差异

栏目: Java · 发布时间: 7年前

内容简介:for与foreach的差异

关于for循环和foreach循环,使用 java 的童鞋已经熟悉得不能在熟悉了,那么关于他们的区别,我们知道多少呢?

for循环是基础语法,所有不在赘述

foreach循环也叫增强型的for循环,是JDK5.0的新特性,foreach循环的加入简化了集合的遍历,缺点是丢掉了索引信息

foreach循环语法

for(type element: array){
}

for循环与foreach循环性能比较

ArrayList<Integer> arrayList = new ArrayList<>();
LinkedList<Integer> linkedList = new LinkedList<>();


for (int i = 0; i < 100000; i++) {
    arrayList.add(i);
    linkedList.add(i);
}

int number;
long start = System.currentTimeMillis();
for (int i = 0; i < arrayList.size(); i++) {
    number = arrayList.get(i);
}
long end = System.currentTimeMillis();
long result = end - start;
System.out.println("ArrayList for循环消耗时间:" + result);


start = System.currentTimeMillis();
for (int i : arrayList) {
    number = i;
}
end = System.currentTimeMillis();
result = end - start;
System.out.println("ArrayList foreach循环消耗时间:" + result);


start = System.currentTimeMillis();
for (int i = 0; i < linkedList.size(); i++) {
    number = linkedList.get(i);
}
end = System.currentTimeMillis();
result = end - start;
System.out.println("LinkList for循环消耗时间:" + result);

start = System.currentTimeMillis();
for (int i : linkedList) {
    number = i;
}
end = System.currentTimeMillis();
result = end - start;
System.out.println("LinkList foreach循环消耗时间:" + result);

运行结果

ArrayList for循环消耗时间:8
ArrayList foreach循环消耗时间:12
LinkList for循环消耗时间:7779
LinkList foreach循环消耗时间:3

可以看出,ArrayList中for循环比foreach循环稍快一点,而在LinkList中,foreach循环比for循环快很多

循环次数增加,ArrayList中for循环仍然比foreach循环快,而LinkList中for循环可能会被程序卡死

总结:

  1. foreach是增强行for循环,JDK1.5的新特性
  2. foreach对掉了索引信息
  3. ArrayList中for循环比foreach循环快
  4. LinkList中foreach循环比for循环快
  5. 循环数组结构的数据时,建议使用普通for循环,因为for循环采用下标访问
  6. 循环链表结构的数据时,一定不要使用普通for循环,数据量大的时可能导致系统奔溃

以上所述就是小编给大家介绍的《for与foreach的差异》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序与法治

程序与法治

孙洪坤 / 中国检察 / 2008-3 / 28.00元

《程序与法治》是系统和全面地研究程序与法治国家建设思想的学术专著,《程序与法治》对程序与法治的若干重大理论与现实问题进行了深入的探讨,如:从法社会学的视角研究程序正义在中国的可适应性问题;程序正义的中国语境;正当程序的宪政价值与构造;正当程序的文化底蕴;中国刑事程序正当化设计的标准、设计的基调、设计的视角;等等。尽管其中某些问题的研究尚待进一步深入,但这些问题的提出有利于开阔我们研究程序法理论的视......一起来看看 《程序与法治》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换