**
先说结论:慎用!
**
需求:获取一个长度为6000的list,element是new的对象,或者基本数据类型,用到了
Collections.nCopies(int n, T o)
返回一个list,出现以下问题 (jdk1.8)。
- element为new对象时,不是6000个不同的对象,而是这6000个位置指向同一个引用,导致对某个position修改时,整个list都在改变。有点失去意义了,毕竟copy出来n个一样的对象就是要分开修改的。
- 得到的list,使用set方法一定会报错。
原因如下:
Collections.nCopies(int n, T o) 返回的是
这个内部类,继承AbstractList,但是没有重写set方法
而AbstractList的set,直接抛异常的,如图
所以调用set就抛异常