for与foreach的差异

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

内容简介: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的差异》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

机器学习

机器学习

周志华 / 清华大学出版社 / 2016-1-1 / 88.00元

机器学习是计算机科学与人工智能的重要分支领域. 本书作为该领域的入门教材,在内容上尽可能涵盖机器学习基础知识的各方面。 为了使尽可能多的读者通过本书对机器学习有所了解, 作者试图尽可能少地使用数学知识. 然而, 少量的概率、统计、代数、优化、逻辑知识似乎不可避免. 因此, 本书更适合大学三年级以上的理工科本科生和研究生, 以及具有类似背景的对机器学 习感兴趣的人士. 为方便读者, 本书附录给出了一......一起来看看 《机器学习》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具