不支持原生类型

原生类型:byte, short, int, long, float, double, boolean, char

public static void main(String[] args) {
int[] array1 = {1, 2, 3};
List list1 = Arrays.asList(array1);
System.out.println("list size: " + list1.size()); // 1

Integer[] array2 = {1, 2, 3}; // 包装类
List list2 = Arrays.asList(array2);
System.out.println("list size: " + list2.size()); // 3

String[] array3 = {"1", "2", "3"}; // 引用类型
List list3 = Arrays.asList(array3);
System.out.println("list size: " + list3.size()); // 3
}

不支持add

大小固定,不支持add/delete

public class ArrayAsListTest {
public static void main(String[] args) {
String[] array = {"1", "2", "3"};
List list = Arrays.asList(array);
list.add("5");
System.out.println(list.size());
}
}

// 运行结果
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at object.ArrayAsListTest.main(ArrayAsListTest.java:11)

大小固定

数组大小是固定的,Arrays.asList的本质是数组,因此大小固定。

public static void main(String[] args) {
String[] array = {"1", "2", "3"};
List list = Arrays.asList(array);
System.out.println(list);

array[0] = "-1";
System.out.println(list);
}

/** output
[1, 2, 3]
[-1, 2, 3]
*/

大小虽然固定,但是可以改变特定位置的值,与数组一样。