印象中循环删除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的大小发生了变化,而你的索引也在变化,所以导致你在遍历的时候会漏掉某些元素.比如当你删除第一个元素之后,继续根据索引访问第二个元素时,因为删除的关于后面的元素都往前移动了一位,所以实际访问的是集合中的第三个元素.因此,这种方式可以用在删除特定位置的一个元素时使用,但不适合循环删除多个元素时使用.

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();}}

总结:

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

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

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

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

    原文:http://www.cnblogs.com/aspirant/p/7900854.html 印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天 ...

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

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

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

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

  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. iOS培训教程——设置默认语言
  2. 路由器简化配置和ASA异步预共享密钥方式建立IKEV2的L2L ×××
  3. c#读写XML文件 (转)
  4. 为什么我从Python转战到Node.js
  5. 通过Url网络编程实现下载
  6. JUnit+EclEmma进行覆盖测试
  7. 【kafka】kafka 中 消息 record 格式
  8. live2d手机制作软件_live2d制作器手机版
  9. VirtualBox装VBoxGuestAdditions增强工具失败
  10. oracle group by优化
  11. 阿里云服务器地域节点测试IP分享(国内+海外)Ping值延迟测试
  12. 淘宝直通车优化,自定义人群,ROI提升
  13. 关于云计算的一些概念理解
  14. 多模态模型 CLIP4Clip 带你实现文本与视频互搜
  15. IOCP之accept、AcceptEx、WSAAccept的区别 .
  16. 设计抗混叠滤波器的三个指导原则--日记
  17. ios swift 纯代码设置UITableViewCell的style
  18. css3之BFC、IFC、GFC和FFC
  19. 爬取大众点评页面数据教程,图片文字如何爬取
  20. 建立动态碳排放责任因子系统——促进风电光电的有效消纳(江亿)

热门文章

  1. RabbitMQ小结
  2. Eclipse怎么全局搜索替换(整个项目)
  3. 让visio保存背景透明的图片。
  4. 2021甘肃平凉高考成绩查询,甘肃省教育考试院:2021年甘肃高考查分入口、查分系统...
  5. python实现第一个web_使用Python的Flask框架来搭建第一个Web应用程序
  6. cesium three性能比较_硬金和千足金都是黄金,哪个比较好?为什么80%人都说硬金不好?...
  7. java 局部变量空间 大小_变量作用域-1:局部变量 和成员变量、各种变量内存分配的大小...
  8. wrong elf class: elfclass32_薇娅倾情推荐亿健ELF跑步机,价格优惠大还为粉丝争取福利! - 消费...
  9. 水果手绘插画素材|一眼就想吃了!
  10. 品牌家居清洁之妙法产品平面海报设计模板