说这个文章之前,首先需要了解一件事:

我们都知道可以通过Arrays.asList()方法,来将数组转为list集合(如果这样就ok也就不需要题目中的后半句话了).

可是以这个方法将数组转换List后,不能对List增删,只能查改,否则会抛出异常。

这是因为java.util.Arrays.ArrayList 这里面有java.util.Arrays里面的内部类,里面没有重写增删方法,就会调用父类的AbstractList,可以看到父类的增删方法,就会报错,即使调用iterator也会报错。
image

而Arrays.asList()生成的list集合其实就是Arrays的内部类.

能增删元素的数组转list

既然不能增删我们就要另辟蹊径,

可以通过:array -> java.util.Arrays.ArrayList -> java.util.ArrayList

实现:

List<String> list = new ArrayList<>(Arrays.asList(array));

这时的new ArrayList<>(Arrays.asList(array)),就调用的并不是初始化大小的方法了,可以进行正常的操作了(add/remove都可以)


迈克丝
82 声望5 粉丝

一步一步学技术,踏踏实实涨经验,兴趣广泛,广交好友,希望大家多多指正/批评.