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

本贴最后更新于 4149 天前,其中的信息可能已经时移世易

预备知识:

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

arrayList.PNG

问题描述:

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

原因:

       在remove后,list会依次往上移,此时i却还在递增。所以导致往上移的map没有找到。解决办法自己思考,呵呵。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注
  • 数据结构
    88 引用 • 115 回帖 • 4 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    删数组 实现类型的不能套循环,你一循环,一个标记 i 往右走,而底层数据往左走,肯定就漏值了哦。
    哈哈 帮你顶顶啊

  • someone

    呵呵,嗯。i--是可以搞定的。就可以不漏值了。。