文档章节

面试题:java中ArrayList循环遍历并删除元素的陷阱

f
 fang_faye
发布于 2017/09/05 17:48
字数 250
阅读 22
收藏 0

直接对ArrayList采用foreach方式遍历并查找删除元素会出现 java.util.ConcurrentModificationException异常;正序删除的方式会漏掉一个元素。

原因:ArrayList的remove底层源码有一个fastremove方法,会有一个modcount++ 的操作,然后再ArrayList内部迭代器中有一个checkForComodification操作,会去检查modCount是否改变,如果改变了就抛出并发修改异常。不管是for each还是使用变量的for循环,都是利用了ArrayList自身的Iterator迭代器,都会出现这样的错误。

注意查看源码!!!

应对措施:

1、使用Iterator自己的remove方法;

2、采用倒序删除的写法来改正这个错误。

© 著作权归作者所有

共有 人打赏支持
f
粉丝 4
博文 87
码字总数 25538
作品 0
崇明
其他
关于ArrayList的5道面试题

我以面试官的身份参加过很多Java的面试,以下是五个比较有技巧的问题,我发现有些初级到中级的Java研发人员在这些问题上没有完全弄明白,似懂非懂。所以我写了一篇相关的文章,帮助初级Java研...

LCZ777
2014/03/25
0
0
集合——关于ArrayList的5道面试题

我以面试官的身份参加过很多Java的面试,以下是五个比较有技巧的问题,我发现有些初级到中级的Java研发人员在这些问题上没有完全弄明白,似懂非懂。所以我写了一篇相关的文章,帮助初级Java研...

亚特兰缇斯
2015/03/03
0
0
08《Java核心技术》之Vector、ArrayList、LinkedList有何区别?

一、提出问题 我们在日常的工作中,能够高效地管理和操作数据是非常重要的。由于每个编程语言支持的数据结构不尽相同,比如我们最早接触到的 C 语言,需要自己实现很多基础数据结构,管理和操...

飞鱼说编程
10/11
0
0
算法和编程面试题精选TOP50!(附代码+解题思路+答案)

作者 | javinpaul 编译 | 王天宇、Jane 整理 | Jane 出品 | AI科技大本营 【导读】之前我们给同学们推荐了很多关于 Python 的面试资源,大家都表示很有用。这次营长表示要翻 Java 的牌子啦~...

AI科技大本营
09/27
0
0
Java for-each循环解惑

从Java5起,在Java中有了for-each循环,可以用来循环遍历collection和array。For each循环允许你在无需保持传统for循环中的索引,或在使用iterator /ListIterator时无需调用while循环中的has...

LCZ777
2014/04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Django支持中文

django是支持中文界面, 先找到Django语言包安装目录,我的在: /usr/local/python3/lib/python3.6/site-packages/django/conf/locale 有zh-Hans和zh-Hant两个文件, 其中zh-Hans是简体中文,...

MichaelShu
18分钟前
1
0
迷宫问题:顺序栈解法

采用顺序栈以及回溯法,一个比较简单的问题,但是从来没有写过,也算是弥补一下自己欠数据结构的债吧,居然也花了一个半小时,无地自容了。。 定义好数据结构求解算法就显得容易一些了。 st...

LoSingSang
25分钟前
0
0
Zookeeper 概述及应用场景

一、概述 分布式协调技术,主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。 ZooKeeper是一个分布式的,开放源码的分布式应用...

PeakFang-BOK
32分钟前
0
0
(译)OpenGL ES2.0 – Iphone开发指引

教程截图: OpenGL ES 是可以在iphone上实现2D和3D图形编程的低级API。 如果你之前接触过 cocos2d,sparrow,corona,unity 这些框架,你会发现其实它们都是基于OpenGL上创建的。 多数程序员...

robslove
42分钟前
0
0
金九银十跳槽季,程序员面试点解析之Java专场

前言 近年来Java工程师这个岗位炙手可热,市场需求大,学习Java的人也越来越多,所以IT企业与求职者的选择都比较多,那么IT企业在面试时都会提哪些问题呢。下面为大家分享 Java高级工程师面试...

老道士
45分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部