增强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异常。

增强for循环只用于查询,不能实现改和删除;
普通循环都能做……
不过增强for循环代码写起来容易一些
增强for循环的本质是定义变量,依次把集合的每个值都依次复制到变量进行操作
但是普通for循环一般都是使用集合的原有值进行操作。
喜欢阅读
  • 极品经理

    极品经理

    一个农村刁民的逆天人生,一个极品屌丝的传奇神话,本想风花雪月缠绵一场,却误打误撞成就了一世荣华!且看屌丝如何逆袭,演绎他这一生中的传奇神话……

  • 重生兵奶爸

    重生兵奶爸

    兵王重生,发现自己拥有另外一个废物人生。妻子被逼离婚,父母被迫还债,女儿饿得瘦骨如柴。他发誓改变命运,用兵王的荣耀,守护所爱的一切!这是一个人渣奶爸逆袭的故事,有点萌,有点暖……有点炸!

  • 娇宠狂妻:boss别乱来

    娇宠狂妻:boss别乱来

    他,霸道有城府,冷峻又多金,对她却无限制纵容……治好她的眼睛,夺回家产帮她报仇,默默支持她的一切,丢给她刷不完的卡用不完的包。某天,下属惊慌失措:“报告傅少,夫人要跑了!”傅景瑜眸光危险一沉,宠成这样还跑,她是不是要上天?

  • 赵先生,请自重

    赵先生,请自重

    一次意外兼职,余乐笙和赵慕城火速闪婚。婚后,两人立下协议,一年后离婚互不相干“姓余的,你给我把东西放下!”一个面色冷漠的男人,沉声说道。“不可能,除非你求我。”一个娇小的女人捧着一个大花瓶,站在高高的椅子上俯视着下面的男人。“赵慕城,现在都几点了才回来!”余乐笙跑过去一把抱住从门口进来的男人,娇蛮的质问道。“笙笙,我们再生一个孩子吧。”赵慕城带着笑意的看着怀里的小女人,轻声说道。

  • 督主在上:朕本红妆

    督主在上:朕本红妆

    某督主:“皇上,微臣见您今日气色不好,建议您吃掉微臣,补补身子。”满朝文武:“咦~~~”某督主:“皇上,深宫寂寥,但有您在这里,空气都变甜了!”天下百姓:“咦~~~”某督主:“皇上,此事微臣十拿九稳,唯独差您一吻!”女主拔出十米大刀,“来,朕满足你!”

  • 40001

    40001

    简介:神州顶尖特种组织战神的老大——楚江回归都市,为了一个婚约,他进入了倾城集团,从此开始了他万花丛中过的精彩人生,打脸、装逼、暧昧层出不穷。最终,楚江站在世界的顶端,笑看天下风云。

  • 大小姐的隐龙近卫

    大小姐的隐龙近卫

    山野高手少年,被麻辣大师姐追杀,来到大都市豪门。从不名一文的穷小子,到各大势力争相收买的大人物。名利双收,更有美女如云。

  • 失忆错爱:总裁的心尖宠

    失忆错爱:总裁的心尖宠

    一场车祸,她最爱的他失忆了,只记得自己喜欢的人的面容....旁人作梗,他误认为喜欢的人已经离世!她为了让他重新爱上自己,误信人言改变自己的性格留在他身边,他却再也想不起来她是谁!她究竟能否追回失忆的爱人?他们能够克服重重阻碍重新回到一起?阮宣和说:“我一定会让他重新记起来的!”

  • 猜你喜欢
  • java增强for循环
  • 增强for循环遍历list
  • 增强型for循环
  • 增强for循环语法
  • 增强for循环格式
  • 增强for循环原理
  • 增强for循环遍历集合
  • 增强for循环遍历数组
  • js增强for循环
  • 增强型for循环的格式
  • 热门推荐
  • lambert beer吸收定律
  • 长沙市实验小学怎么样
  • centos rpm安装gcc
  • 矩阵初等变换后相似
  • 富士 raw 胶片模拟
  • ps3暴雨好结局
  • 桥梁伸缩缝的施工安装
  • 瓦斯超限分析处置制度
  • java dental chart
  • 蟋蟀铃声下载
  • iso18001最新版本
  • 宝山新闻 看看
  • 舒尔se535怎么样
  • laoliangjianggushi
  • 刘亦菲卖萌图片大全
  • new balance530鞋底
  • 黑塔利亚米英r18h文
  • playful铃声
  • stef 和 lena
  • 贝利叶一家 中法字幕
  • All Right Reserved 爱说篇