【每日阅读】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

(0)
geekgaogeekgao博主
上一篇 2020年5月1日
下一篇 2020年5月3日

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

GitHub
分享本页
返回顶部

Warning: error_log(/usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/#log/log-2120.txt): failed to open stream: No such file or directory in /usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/spider.class.php on line 2900