数组转List - Arrays.asList的坑

  1. asList方法返回的是数组的一个视图

视图意味着,对这个list的操作都会反映在原数组上,而且这个list是定长的,不支持add、remove等改变长度的方法。

  1. 不能把基本数据类型转化为列表

仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,要想把基本数据类型的数组转化为其包装类型的list,可以使用guava类库的工具方法,示例如下:

  1. int[] intArray = {1, 2, 3, 4};
  2. List<Integer> list = Ints.asList(intArray);

支持增删改查的方式1

通过ArrayList的构造器,将Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList转为java.util.ArrayList
关键代码ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;

支持增删改查的方式2 - 通过集合工具类Collections.addAll()方法(最高效)

通过Collections.addAll(arrayList, strArray)方式转换,根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素转为二进制,然后添加到List中,这是最高效的方法。
关键代码

  1. ArrayList< String> arrayList = new ArrayList<String>(strArray.length);
  2. Collections.addAll(arrayList, strArray);