专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

增强for循环是什么_java

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/9 3:00:48       共计:3603 浏览

增强for循环是什么?

增强for循环亦为高级for循环。

增强for循环内部是使用的iterator来遍历的,只能遍历数组和实现了Iterable接口的集合。优点是写法简便,无需获得数组、集合长度,也无需根据索引来访问元素。缺点是不能在循环里动态的删除元素和获取元素下标。

任何的增强for循环都可以改写为普通for循环。遍历集合所有元素的话用增强for循环更加简洁,如果是复杂的循环,还是用for循环比较好,for循环功支持索引取元素,可以使用下标来控制位置。

高级for有一个局限性,必须有被遍历的目标。建议在遍历数组的时候,还是希望使用传统for,因为传统for可以定义角标。凡是支持迭代器的都支持高级for

.而对于 LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用 增强for循环,也就是iterator。

下面用一个例子说明这点:

代码一

public static void removeEvensVer2(List<Integer> lst)

{

for (Integer x : lst)

if (x % 2 == 0)

lst.remove(x);

System.out.println(lst);

}

public static void removeEvensVer2(List<Integer> lst) { for (Integer x : lst) if (x % 2 == 0) lst.remove(x); System.out.println(lst); }

代码二

public static void removeEvensVer3(List<Integer> lst)

{

Iterator<Integer> itr = lst.iterator();

while (itr.hasNext())

if (itr.next() % 2 == 0)

itr.remove();

System.out.println(lst);

}

public static void removeEvensVer3(List<Integer> lst) { Iterator<Integer> itr = lst.iterator(); while (itr.hasNext()) if (itr.next() % 2 == 0) itr.remove(); System.out.println(lst); }代码一在运行时抛出异常,代码二正常

原因分析:因为增强的for循环内部就是调用iterator实现的,在遍历的时候就将list转化为了迭代器,当迭代器被创建之后,如果从结构上对列表修改除非通过迭代器自身的remove、add方法,其他任何时间任何方式的修改,迭代器都会抛出ConcurrentModificationException异常。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:用了百度的照片_python | ·下一条:鼠标右击点不出来_java

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有