JAVA中循环删除list中元素的方法总结
原文: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中元素的方法总结相关推荐
- java 删除list元素_JAVA中循环删除list中元素的方法总结
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...
- java list 范围删除_JAVA中循环删除list中元素(移除list两时间范围外的元素)
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...
- Java中循环删除list中元素的方法总结(总结)
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后在今天使用的时候发现报错了,然后去科普了一下,发现这是一个误区.下面我们来一起看一下. Java中循环遍 ...
- JAVA中循环删除集合中元素的方法总结
一.list集合循环删除元素 1.通过普通的for删除删除符合条件的多个元素 for(int i=0;i<list.size();i++){if(list.get(i).equals(" ...
- java 遍历删除list_JAVA中循环删除list中元素
JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i if(list.get ...
- java for循环删除元素_JAVA中循环删除list中元素的方法总结
JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i if(list.get ...
- JAVA中循环删除集合中元素的方法
使用Iterator的方式可以顺利删除和遍历 Iterator<String> it = list.iterator(); while(it.hasNext()){String x = i ...
- Java 循环删除list中指定元素
Java 循环删除list中指定元素 1.for循环遍历删除指定元素 2.增强for循环删除指定元素 3.iterator删除指定元素 1.for循环遍历删除指定元素 List<String&g ...
- Java中使用for循环删除数组中某个元素,并按原有顺序打印
package com.ty.demo; //使用for循环删除数组中的某个元素,并按照原有顺序打印出来 public class Demo03 { public static void main(S ...
最新文章
- 看完JDK并发包源码的这个性能问题,我惊了!
- 人工智能的挑战远未到来
- 开发日记-20190504 关键词 汇编语言(三)
- 根据表中的时间戳字段统计每天数据的数量
- 和牛奶太多量竟然会发胖~
- 小马智行Pony.ai 2020校招宣讲行程来了!
- usaco1.4.4(milk3)
- hiredis(Synchronous API)
- element el-popover 要渲染较多内容,特定格式,以及在table 显示不完整。
- 外观模式和代理模式的联系和区别_java23种设计模式-结构型模式之外观模式
- Spring Data MongoDB示例
- gorm软删除_gorm的简单使用和注意事项
- MyBatis学习(四)MyBatis缓存
- Grafana+Telegraf+Influxdb监控Tomcat集群方案
- 10 道超级高频 Java 面试题,助力金三银四
- 如何有效降低网站跳出率
- 【chm】Python提取chm数据
- 百胜中国拟2025年前开1000家Lavazza咖啡店​;别样肉客开始陆续进驻中国山姆会员商店 | 知消...
- 蓝牙音箱电路板原理图_一种蓝牙音箱电路板的制作方法
- 怎么把视频制作成GIF动态图?这几种制作方法很简单