关于 for 循环和 foreach 循环,使用 java 的童鞋已经熟悉得不能在熟悉了,那么关于他们的区别,我们知道多少呢?
for 循环是基础语法,所有不在赘述
foreach 循环也叫增强型的 for 循环,是 JDK5.0 的新特性,foreach 循环的加入简化了集合的遍历,缺点是丢掉了索引信息
foreach 循环语法
for 循环与 foreach 循环性能比较
for(type element: array){
}
运行结果
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 循环可能会被程序卡死
总结:
foreach 是增强行 for 循环,JDK1.5 的新特性
foreach 对掉了索引信息
ArrayList 中 for 循环比 foreach 循环快
LinkList 中 foreach 循环比 for 循环快
循环数组结构的数据时,建议使用普通 for 循环,因为 for 循环采用下标访问
循环链表结构的数据时,一定不要使用普通 for 循环,数据量大的时可能导致系统奔溃
来源: https://juejin.im/post/5a5b1459f265da3e5b32c2f9