天天看点

Java中ArrayList remove会遇到的坑前言

平时最常用的莫过于<code>ArrayList</code>和<code>HashMap</code>了,面试的时候也是问答的常客。先不去管容量、负载因子什么的,就是简单的使用也会遇到坑。

<a></a>

经常遇到的一个场景是:遍历list, 然后找到合适条件的给删除掉,比如删除所有的偶数。

看起来好像没问题,加入面试的时候当面问:输出结果是什么?再问真不会报错吗?再问结果是什么?

报错

结果是空list

结果是[1, 2, 5]

[1, 3, 4]

报错: java.lang.UnsupportedOperationException

否,报错java.util.ConcurrentModificationException

报错: java.lang.IndexOutOfBoundsException: Index: 2, Size: 2

这是很好的习惯, 不像开头那样每次循环都计算一次size,而且按这种情况还可以再运行的时候报错。文初的做法不报错,但结果并不是我们想要的。

报错: java.util.ConcurrentModificationException

本文转自Ryan.Miao博客园博客,原文链接:http://www.cnblogs.com/woshimrf/p/java-arryalist-remove.html,如需转载请自行联系原作者