集合
Arrays
Arrays.asList
Arrays.asList是将對象數組或單個對象轉為List,下面是ArrayList的代碼
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
可以看到是将數組轉為ArrayList,但是需要注意的是asList方法傳回的ArrayList不是java.util的ArrayList,而是Arrays自己實作的一個List
可以看下Arrays的ArrayList具體的實作

裡面并沒有實作add和remove方法,是以如果使用add和remove方法就會抛出UnsupportedOperationException異常
同樣的問題在調用java.util包下的Collections.emptyList方法時也會出現
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
可以用下面的方法解決問題
public static void main(String[] args) {
String[] str = {"李四", "王五"};
// 1. 使用Collections.addAll方法替換Arrays.asList
ArrayList<Object> arrayList = new ArrayList<>();
Collections.addAll(arrayList, str);
arrayList.add("趙大");
System.out.println("Arrays.toString(arrayList.toArray()) = " + Arrays.toString(arrayList.toArray()));
// 2.使用Arrays.asList方法後再轉為java.util包下的ArrayList避免add(異常)
List<String> list = new ArrayList<>(Arrays.asList(str));
list.add("趙大");
System.out.println("Arrays.toString(list.toArray()) = " + Arrays.toString(list.toArray()));
}