foreach(增强型for循环)

增强型for循环

何为增强型for循环呢,在我第一次看到for中竟然可以添加其他的参数时,感觉到比较困惑,我看到的内容是:

int[] a = {1,2,3}
for(int i : a){
	......
}

看到的时候整个人是困惑的,这样一个循环是什么意思呢?
通过观察代码含义后得知此循环叫增强型for循环,是用于数组和集合(Collection)中的for循环,可以实现数组或集合的遍历,其本质是通过for循环实现对迭代器的调用,下面是我对该内容的整理:

foreach的语法:

for(元素类型 元素名称 : 遍历数组(集合)(或者能进行迭代的)){

}

foreach在作用上和for循环在循环数组时是相同,都是可以实现遍历数组的目的,但二者之间略有差别。

for循环遍历数组本质上是遍历数组下标,即先找到索引,再连接数组元素,而foreach循环是基于Iterator来实现的,所以foreach是每次访问该元素的下一个元素的地址,来实现的直接元素访问。

因为for循环实现了遍历数组下标,所以可以直接的对元素值进行删除,但因其地址并未被删除,所以可以直接将后元素的值对前元素进行赋值,即可另值消失。

因为foreach是基于Iterator实现的,直接访问的是下一个元素的地址,所以在其中无法实现直接的数组元素删除,需要借助Iterator中定义的remove方法来对某元素实现删除,该删除直接删除的为元素地址,但在删除元素后,foreach中定义的某变量值会发生改变,当其值发生改变时会造成安全隐患,如果循环继续运行,则Java会抛出异常。

所以我们通常是不可以使用foreach来实现元素的删除的,如果需要将元素进行删除时,需要采用for循环,而不能采用foreach循环。

我们讨论了二者之间差别,那我们也要考虑他们的效率问题:

需要循环数组结构的数据时,建议使用普通for循环,因为for循环采用下标访问,对于数组结构的数据来说,采用下标访问比较好。

需要循环链表结构的数据(集合)时,一般不要使用普通for循环,这种做法很糟糕,数据量大的时候有可能会导致系统崩溃。

所以当我们循环集合时采用foreach效率会有所提高,当我们循环数组时,二者效率相差不多,为方便删除数组元素,可以使用标准的for循环。

  • 36
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值