List集合在遍历过程中的删除:[1,1,2,3,4,5]

for循环正续会漏掉一个1

for(int i=0;i<list.size();i++){

if(list.get(i).equals(1)){

list.remove(i);

}

}

for循环倒序可以删除所有1

for(int i=list.size()-1;i>=0;i--){

if(list.get(i).equals(1)){

list.remove(i);

}

}

迭代器和foreach遍历时删除都会报错:java.util.ConcurrentModificationException;

foreach就是通过Iterable接口在序列中进行移动

Iterator iterator=list.iterator();

while(iterator.hasNext()){

int temp=(int) iterator.next();

if(temp==1){

list.remove(temp);

}

}

for (Object object : list) {

if(list.get(0).equals(1)){

list.remove(0);

}

}

因此,不能在对一个List进行遍历的时候将其中的元素删除掉

解决办法是,你可以先将要删除的元素用另一个list装起来,等遍历结束再remove掉

可以这样写

List delList = new ArrayList();//用来装需要删除的元素

for(Information ia:list)

if(ia.getId()==k){

n++;

delList.add(ia);

}

list.removeAll(delList);//遍历完成后执行删除

List集合在遍历过程中的删除的更多相关文章

  1. Java Map在遍历过程中删除元素

    Java中的Map如果在遍历过程中要删除元素,除非通过迭代器自己的remove()方法,否则就会导致抛出ConcurrentModificationException异常.JDK文档中是这么描述的: ...

  2. 对List遍历过程中添加和删除的思考

    对List遍历过程中添加和删除的思考 平时开发过程中,不少开发者都遇到过一个问题:在遍历集合的的过程中,进行add或者remove操作的时候,会出现2类错误,包括:java.util.Concurre ...

  3. Iterator的remove方法可保证从源集合中安全地删除对象(转)

    如果对正在被迭代的集合进行结构上的改变(即对该集合使用add.remove或clear方法),那么迭代器就不再合法(并且在其后使用该迭代器将会有ConcurrentModificationExcept ...

  4. Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)——无非是在传统遍历过程中修改叶子结点加入后继结点信息(传统是stack记录),然后再删除恢复

    先看看线索二叉树 n个结点的二叉链表中含有n+1(2n-(n-1)=n+1)个空指针域.利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索 ...

  5. Lambda 表达式遍历集合时用remove方法删除list集合中满足条件的元素问题

    一:循环遍历list集合的四种方式 简单for循环 iterator循环 增加for循环 Lanbda表达式 二:四种遍历方式的用法示例 //简单for循环 List<SalaryAdjustm ...

  6. JAVA中循环删除list中元素

    文章来源: https://www.cnblogs.com/pcheng/p/5336903.html JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环) ...

  7. Java中循环删除list中元素的方法总结

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

  8. 浅入深出之Java集合框架(中)

    Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...

  9. Java基础——集合(持续更新中)

    集合框架 Java.util.Collection Collection接口中的共性功能 1,添加 booblean add(Object obj);  往该集合中添加元素,一次添加一个 boolea ...

随机推荐

  1. 对于php-fpm和cgi,还有并发响应的理解

    参考链接: - https://www.zhihu.com/question/64414628   php fpm 进程数和并发数是什么关系? - https://segmentfault.com/q ...

  2. tornado之Hello world

    #!/usr/bin/env python26 #-*- coding:utf8 -*- import tornado.httpserver import tornado.ioloop import ...

  3. [转]SQL Server 表变量和临时表的区别

    一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约 ...

  4. Java 浏览器兼容模式

    现在设计的东西,很多浏览器不兼容.下面贴出代码.测试在360和IE浏览器下,可以兼容的 <!doctype html><html><head>    <met ...

  5. 用Python写一款属于自己的 简易zip压缩软件 附完成图(适合初学者)

    一.软件描述 用Python tkinter模块写一款属于自己的压缩软件.zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile来操作zip文件,具有功能:zip压缩功能,zip ...

  6. TFboy养成记

    转自:http://www.cnblogs.com/likethanlove/p/6547405.html 在tensorflow的使用中,经常会使用tf.reduce_mean,tf.reduce_ ...

  7. params SqlParameter[] commandParameters(转)

    C#代码  ExecuteReader(string connectionString, CommandType commandType, string commandText, params Sql ...

  8. 数细胞-swust oj

    数细胞(0964) 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.编程需要用到的队列及其相关函数已经实现,你只需要完 ...

  9. Mysql--触发器的操作

    1.为什么使用触发器 2.创建触发器 2.1 创建有一条执行语句的触发器 例子:在数据库company中存在两个表对象:部门表(t_dept)和日记表(t_diary),创建触发器实现向部门表中插入记 ...

  10. Numpy数组对象的操作-索引机制、切片和迭代方法

    前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...