java中在使用ArrayList的remove方法的陷阱

预备知识:

在项目中因为须要,可能会动态的对一个List进行操做,这里说明ArrayList,他的底层是数组的实现,若是你用LinkedList就不会出现这样的问题,由于LinkedList底层是链表的实现。数组

问题描述:

从上图能够看出在for循环当循环到i=2时,咱们将map2remove掉,会发现当紧接着往下走的时候i=3,那么map3这个数据就没有遍历到。会出现一个隐藏的bug,若是平时不注意,在实际开发中,当出现这种问题,还真很差找。spa

缘由:

在remove后,list会依次往上移,此时i却还在递增。因此致使往上移的map没有找到。解决办法本身思考,呵呵。blog

相关文章
相关标签/搜索