【每日阅读】2020年5月2日-一口气带你踩完五个 List 的大坑,真的是处处坑啊!

真诚的希望您能留言与我交流,这会对我有非常大的帮助!

链接

https://mp.weixin.qq.com/s/gyf08otJYg3WgmCMenH-dg

文章截图

简评

这篇文章挺有意思的,里面说了好几种因为“认为修改的不是一个list但实际修改的是一个list”造成的异常。工作中我真的遇到过一种造成过线上问题,就是subList那个。关于list的使用确实有很多坑啊。

总结就是不确定是不是修改的新的list,但你想要的是不影响原list时,就该用new ArrayList(原list)这种方式强行让新的list和原list无关。不过,虽然一直这样用,刚看了下这个方法的源码,里面使用了Arrays.copyOf这个方法,对这个方法有印象,不过忘了有什么玄机了。。

文章里面最后留了个思考题,为什么把那个改成2就不报异常了,是因为remove后,list大小变成了2,在判断iterator.hasNext()时就退出了,而根本不会走到可能会抛出ConcurrentModificationException异常的next方法!

原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/1574

发表评论

登录后才能评论
GitHub
分享本页
返回顶部