在编程中,尝试在循环中直接删除列表(List)元素常常会导致错误,比如 IndexOutOfBoundsException 或ConcurrentModificationException。以下是关于这个问题的详细解答: 1. 报错原因分析 IndexOutOfBoundsException:当使用普通for循环遍历列表时,如果直接删除列表中的元素,列表的大小会发生变化,但循环的迭代次数仍然是基于初始列表...
第7集 | 【干货】深入源码,我终于找到了循环list删除元素报错的原因 #源码 #java #程序员#面试题 #多线程 239 08:05 第8集 | 用4个方法提升接口性能 | 多线程 | 数据库优化 | 缓存 | 异步MQ #互联网 #程序员 #科技 573 08:18 第9集 | Lombok还能这么玩?代码效率翻倍,爱不释手! #程序员 #科...
1、for循环遍历listfor(inti=0;i<list.size();i++){if(list.get(i).equals("del")){ list.remove(i); } } 这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的索引也在变化,所以会导致你在遍历的时候漏掉某些元素。比如当你删除第1个元素后,继续根据索引访问第2个元素时,因为删除的关系...
接下来看下上文提到的this.expectedModCount问题,我断点for循环后深入调试可以看到 6.png 此处在取得遍历器的时候就已经将ArrayList.this.modCount赋值到expectedModCount中,到了这一步就很明显了,在进行remove(i)的时候改变了ArrayList.this.modCount的值,导致两个值不相同,后面还有元素再进行遍历的时候check了一下,...
最近和某个朋友聊天,说他手下的一个开发,工作 3 年多了,一个需求的技术点,需要循环删除 List 中的元素,整了半天,说程序报错,不会弄。。 他挺无语的,和我倾诉,我说工作 3 年多也不至于吧,不会的话,在网上找找也能搞定啊,他说确实是的,这个开发挺难带的,简直崩溃!!
干货点:最近review同事代码的时候发现了一个问题,在ArrayList中边遍历边删除多个元素,在提醒同事后就想着写篇文章从源码角度详细聊聊这个问题好了,当然了我也发现很多人其实都不知道这个报错的原理是什么,如果你也不知道,那确实该好好看这篇文章了。 前几天review同事代码的时候发现对方提交了一份list中边遍历边删除的...