文档章节

循环遍历list的时候删除list的元素报错

孙幼凌
 孙幼凌
发布于 2017/02/13 14:51
字数 139
阅读 93
收藏 0
点赞 0
评论 0

【强制】不要在 foreach 循环里进行元素的 remove/add 操作。 remove 元素请使用 Iterator
方式,如果并发操作,需要对 Iterator 对象加锁。
    反例:
         List<String> a = new ArrayList<String>();
            a.add("1");
            a.add("2");
            for (String temp : a) {
            if("2".equals(temp)){
                a.remove(temp);
                }
            }
说明: 这个例子的执行结果会出乎意料,报错了。

    因为list在循环中的时候是不可以删除它的元素的。

正例:
    Iterator<String> it = a.iterator();
        while(it.hasNext()){
            String temp = it.next();
            if(删除元素的条件){
                it.remove();
              }
        }

© 著作权归作者所有

共有 人打赏支持
孙幼凌
粉丝 4
博文 56
码字总数 31262
作品 0
合肥
程序员
JAVA中循环删除list中元素的方法总结

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

文文1
2016/12/08
67
0
Iterator/foreach遍历list时,删除元素的报错问题

今天遇到一个问题,代码如下: 创建了一个,然后给他了4个元素,将转为然后进行遍历,在遍历过程中对list进行,在测试的过程中,发现居然会出现报错现象,一直想不明白,后来根据报错信息去查...

KingJack灬
2017/12/07
0
0
正确处理移除list中数据

首先大家先看一段代码: for (Map<String, Object> map : dataMap) {String roomStateStr = (String) map.get("RoomState");int mapRoomState = Integer.parseInt(roomStateStr);if(mapRoomS......

zchuanzhao
2015/10/12
24
0
python列表(list)操作

一、创建列表 a_list = ['a',1,('a','b')]b_list = ['a','b',0,1,3] 二、创建连续的list list = range(1,5) #即 L=[1,2,3,4],不含最后一个元素 list = range(1, 10, 2) #即 L=[1, 3, 5, 7, 9......

liaojie
2014/03/18
0
0
jdk1.6集合源码阅读之LinkedList

如果说ArrayList是基于数组实现的List,那么LinkedList是基于链表实现的List。 1.定义 而Dqueue接口 是一个双向队列,也就是既可以先入先出,又可以先入后出,再直白一点就是既可以在头部添加...

双月通天
2016/08/24
7
0
【Java基础】01 集合

1.1 Collection:单列集合 List: 有存储顺序, 可重复 ArrayList: 数组实现, 查找快, 增删慢由于是数组实现, 在增和删的时候会牵扯到数组增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查...

sugary
2016/05/27
35
0
Python入门(三)——list和tuple,条件判断和循环,dict和set

Python入门(三)——list和tuple,条件判断和循环,dict和set 好的,我们继续来学习python,这次我们讲容器,也就是list,我们可以这样表示 一.list 这样我们可以看下输出的内容 我们可以看到打...

qq_26787115
2017/04/29
0
0
JavaScript 常用基础知识

1、数据类型: 1)原始类型: String Boolean Number Null Undefiend 2)引用类型:Object .......... 总结:为什么老生常谈数据类型呢?在开发中他们到底数据类型有什么指引,我从不纠结Nul...

learn_more
2014/11/08
0
0
QT容器之遍历器和隐式数据共享

前面说过,Qt容器类提供了两种遍历器:Java风格的和STL风格的。前者比较容易使用,后者则可以用在一些通过算法中,功能比较强大。 对于每一个容器类,都有与之相对应的遍历器:只读遍历器和读...

晨曦之光
2012/04/13
224
0
怎样删除STL容器中的元素

怎样删除STL容器中的元素去除一个容器中有特定值的所有对象: 如果容器是vector、string或deque,使用erase-remove惯用法。 如果容器是list,使用list::remove。 如果容器是标准关联容器,使...

啊莱
2007/03/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第七章:过滤器、监听器、拦截器

前言 在实际开发过程中,经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏高词汇、访问权限控制(URL级别)等业务需求。这些对于业务来说一般上是无关的,业务方是无需...

oKong
13分钟前
2
0
存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储。 顺序结构和链接结构适用在内存结构中。 顺序表每个单元都是按物理...

DannyCoder
23分钟前
0
0
Firefox 61已经为Ubuntu 提供支持

最新和最好的Mozilla Firefox 61 “Quantum”网络浏览器已经为Ubuntu Linux操作系统的用户提供了支持,现在可以通过官方软件库进行更新。 Mozilla于2018年6月26日发布了Firefox 61版本,该版...

六库科技
49分钟前
0
0
Win10升级后执行系统封装(Sysprep)报错

开始封装 一年多以前开始给公司封装Win10系统,便于统一给公司电脑初始化携带各种软件的系统,致力于装完既可以开发的状态。那时候最新的版本是Win10 1703版本,自然就以他为母盘,然后结合V...

lyunweb
今天
39
0
php 性能优化

#什么情况下会遇到性能问题 PHP 语法使用的不恰当

to_be_better
今天
0
0
Jenkins 构建触发器操作详解

前言 跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行。 一、定时构建语法 * * * * * (五颗星,中间用空格隔...

覃光林
今天
0
0
IDEA配置技巧

超详细设置Idea类注释模板和方法注释模板 idea去掉注解param下划线 JetBrains全系列破解

AK灬
今天
0
0
rsync通过服务同步/Linux系统日志/screen工具

rsync通过服务同步 分为服务端(机器A) 和客户端(机器B) 机器A操作编辑/etc/rsyncd.conf配置文件 [root@yolks1 ~]# vim /etc/rsyncd.conf 文件中添加以下配置 port=873 ...

Hi_Yolks
今天
0
0
分发系统介绍expect脚本远程登录expect脚本远程执行命令 expect脚本传递参数

分发系统介绍 分发系统-expect讲解(也就是一个分发的脚本) 场景: 业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因为业...

lyy549745
今天
0
0
android studio 中设置创建类时的说明信息(包含 作者 ,创建时间,注释说明等)

今天简单来说一下android studio开发工具中的 一个小设置功能; 在开发过程中我们习惯给新建的类添加一些注释信息,创建日期、时间和作者等。 设置信息 File—>Settings—>Editor—>File and...

切切歆语
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部