问题场景:
平时一般开发中遇到想把数组转换成集合的时候,我一般用的是Arrays.asList()方法。之前没出过问题可能是因为对于转换后的集合没有进行处理。
问题描述
当对Arrays.asList()生成的集合进行增删操作时会报错
@SpringBootTest
class MallMemberApplicationTests {
@Test
void contextLoads() {
List<Integer> list = Arrays.asList(1, 2, 3);
list.add(4);
}
}
报了一个不支持操作异常
原因分析:
看这个方法源码
可以看到返回的ArrayList不是Util包下面的list而是Arrays的内部类
可以看到这个类中没看到add方法,但是这个类继承AbstractList< E >类,ctrl进去看一下
到这就能看到了,这个类的add方法直接抛了异常,相当于没有add逻辑,remove方法同理。
解决方案:
如果还想用Arrays.asList()方法还想修改这个集合,可以用以下方法。
可以将返回的集合放到ArrayList的构造方法里,然后操作新集合。