原文:http://www.cnblogs.com/aspirant/p/7900854.html

 印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区。下面就来讲一讲。。伸手党可直接跳至文末。看总结。。

  JAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。

1、for循环遍历list

for(int i=0;i<list.size();i++){if(list.get(i).equals("del"))list.remove(i);
}

  这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的索引也在变化,所以会导致你在遍历的时候漏掉某些元素。比如当你删除第1个元素后,继续根据索引访问第2个元素时,因为删除的关系后面的元素都往前移动了一位,所以实际访问的是第3个元素。因此,这种方式可以用在删除特定的一个元素时使用,但不适合循环删除多个元素时使用。

2、增强for循环

for(String x:list){if(x.equals("del"))list.remove(x);
}

  这种方式的问题在于,删除元素后继续循环会报错误信息ConcurrentModificationException,因为元素在使用的时候发生了并发的修改,导致异常抛出。但是删除完毕马上使用break跳出,则不会触发报错。

3、iterator遍历

Iterator<String> it = list.iterator();
while(it.hasNext()){String x = it.next();if(x.equals("del")){it.remove();}
}

  这种方式可以正常的循环及删除。但要注意的是,使用iterator的remove方法,如果用list的remove方法同样会报上面提到的ConcurrentModificationException错误。

  总结:

  (1)循环删除list中特定一个元素的,可以使用三种方式中的任意一种,但在使用中要注意上面分析的各个问题。

  (2)循环删除list中多个元素的,应该使用迭代器iterator方式。

JAVA中循环删除list中元素的方法总结相关推荐

  1. java 删除list元素_JAVA中循环删除list中元素的方法总结

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...

  2. java list 范围删除_JAVA中循环删除list中元素(移除list两时间范围外的元素)

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...

  3. Java中循环删除list中元素的方法总结(总结)

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后在今天使用的时候发现报错了,然后去科普了一下,发现这是一个误区.下面我们来一起看一下. Java中循环遍 ...

  4. JAVA中循环删除集合中元素的方法总结

    一.list集合循环删除元素 1.通过普通的for删除删除符合条件的多个元素 for(int i=0;i<list.size();i++){if(list.get(i).equals(" ...

  5. java 遍历删除list_JAVA中循环删除list中元素

    JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i if(list.get ...

  6. java for循环删除元素_JAVA中循环删除list中元素的方法总结

    JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i if(list.get ...

  7. JAVA中循环删除集合中元素的方法

    使用Iterator的方式可以顺利删除和遍历 Iterator<String> it = list.iterator(); while(it.hasNext()){String x = i ...

  8. Java 循环删除list中指定元素

    Java 循环删除list中指定元素 1.for循环遍历删除指定元素 2.增强for循环删除指定元素 3.iterator删除指定元素 1.for循环遍历删除指定元素 List<String&g ...

  9. Java中使用for循环删除数组中某个元素,并按原有顺序打印

    package com.ty.demo; //使用for循环删除数组中的某个元素,并按照原有顺序打印出来 public class Demo03 { public static void main(S ...

最新文章

  1. 看完JDK并发包源码的这个性能问题,我惊了!
  2. 人工智能的挑战远未到来
  3. 开发日记-20190504 关键词 汇编语言(三)
  4. 根据表中的时间戳字段统计每天数据的数量
  5. 和牛奶太多量竟然会发胖~
  6. 小马智行Pony.ai 2020校招宣讲行程来了!
  7. usaco1.4.4(milk3)
  8. hiredis(Synchronous API)
  9. element el-popover 要渲染较多内容,特定格式,以及在table 显示不完整。
  10. 外观模式和代理模式的联系和区别_java23种设计模式-结构型模式之外观模式
  11. Spring Data MongoDB示例
  12. gorm软删除_gorm的简单使用和注意事项
  13. MyBatis学习(四)MyBatis缓存
  14. Grafana+Telegraf+Influxdb监控Tomcat集群方案
  15. 10 道超级高频 Java 面试题,助力金三银四
  16. 如何有效降低网站跳出率
  17. 【chm】Python提取chm数据
  18. 百胜中国拟2025年前开1000家Lavazza咖啡店​;别样肉客开始陆续进驻中国山姆会员商店 | 知消...
  19. 蓝牙音箱电路板原理图_一种蓝牙音箱电路板的制作方法
  20. 怎么把视频制作成GIF动态图?这几种制作方法很简单

热门文章

  1. 史上最全中文语料数据集
  2. SAP MM 采购发票上的金额小差异
  3. SAP零售商品类别层次:为什么(业务视角)?
  4. 北大杨超:以偏微分方程求解为例,AI如何助力科学计算?
  5. SAP MM 可以通过STO在公司间转移质检库存?
  6. 雍正继承帝位,给职场中的我们的启示 --- 我看电视剧《雍正王朝》
  7. 继谷歌苹果微软也被曝人工收集用户语音数据,微软公开承认了
  8. SAP MM PR单据中采购组为空带来的问题
  9. 人工智能将如何改变芯片设计
  10. 年终盘点:2021年AI领域值得关注的十件事