List与数组互转
数组转List
-
使用
Arrays.asList(T... a)
方法。String[] arr = new String[]{ "a","b","c"}; List<String> stringList = Arrays.asList(arr);
这里有两个需要注意的点:
-
通过
asList()
方法转出来的List是一个ArrayList,不过这个ArrayList并不是java.util
包下的那个ArrayList,而是Arrays这个类的一个内部类,这个ArrayList并没有重写AbstractList的add(E e)
方法,所以如果对stringList进行添加元素操作,会抛出UnsupportedOperationException
,这个在AbstractList源码中里面有体现。 -
如果修改原数组的值,则List相应的元素的值也会跟着变化。这点从源码中就能看出
@SafeVarargs @SuppressWarnings("varargs") public static <T> List<T> asList(T... a) { return new ArrayList<>(a); }
直接new了一个自己的内部类ArrayList,然后再继续看ArrayList的构造方法
ArrayList(E[] array) { a = Objects.requireNonNull(array); <
-