java增强for循环对比_java – 为什么增强的for循环比普通for循环更有效

我读到增强的for循环比这里的正常for循环更有效:

当我搜索它们的效率之间的差异时,我发现的是:在正常for循环的情况下,我们需要额外的步骤来找出数组的长度或大小等,

for(Integer i : list){

....

}

int n = list.size();

for(int i=0; i < n; ++i){

....

}

但这是唯一的原因,增强的for循环优于正常的循环吗?在这种情况下,更好地使用normal for循环,因为理解增强的for循环有点复杂.

任何人都可以解释这两种for循环的内部实现,或解释使用增强型for循环的其他原因吗?

解决方法:

说增强的for循环更有效,这有点过于简单了.它可以,但在许多情况下,它几乎与老派循环完全相同.

首先要注意的是,对于集合,增强的for循环使用Iterator,因此如果您使用Iterator手动迭代集合,那么您应该具有与增强的for循环几乎相同的性能.

增强的for循环比一个天真实现的传统循环更快的地方是这样的:

LinkedList list = ...;

// Loop 1:

int size = list.size();

for (int i = 0; i

Object o = list.get(i);

/// do stuff

}

// Loop 2:

for (Object o : list) {

// do stuff

}

// Loop 3:

Iterator it = list.iterator();

while (it.hasNext()) {

Object o = it.next();

// do stuff

}

在这种情况下,循环1将比循环2和循环3都慢,因为它将在每次迭代中(部分地)遍历列表以找到位置i处的元素.然而,由于使用迭代器,循环2和3将仅在列表中进一步步骤一个元素.循环2和3也具有几乎相同的性能,因为循环3几乎就是编译器在循环2中编写代码时将产生的内容.

标签:java,for-loop,foreach

来源: https://codeday.me/bug/20190926/1821089.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值