Arrays.asList()和ArrayList的subList()大坑
以下内容大部分摘抄自公众号:程序员乔戈里 在项目中用了Arrays.asList、ArrayList的subList,被公开批评 (qq.com) 仅作为自己的记录学习过的知识,如有侵权,联系立删!
1:Arrays.asList()
该方法返回的ArrayList不是我们平时常用的java.util.ArrayList,而是Arrays类的一个内部类,该内部类继承AbstractList类,并且重写了很多方法,但是没有重写add,remove,clear方法,所以通过Arrays.asList方法得到的集合不能进行修改,否则就会报如下异常:

阿里巴巴开发规范中也有说到:

所以一定要注意避免踩坑!!!
2:ArrayList的subList方法:
首先看下使用方式:


但是有以下几点需要注意:


所以,要注意使用了subList方法后,修改父子集合中的值都会对对方产生影响,同时:修改父集合的结构(新增值,删除值等)会报异常,修改子集合的结构,虽不会报异常,但是也是会对父集合带来影响。

浙公网安备 33010602011771号