List.of与Arrays.asLIst区别

static List asList(T... a) 返回由指定数组支持的固定大小的列表。
static List of(E... elements) 返回包含任意数量元素的不可修改列表。
static List of() 返回包含零元素的不可修改列表。
static List of(E e1) 返回包含一个元素的不可修改列表。

:List.of()是Java9引入的新特性。

1.List.of返回不可变的list,Arrays.asList返回可变的list(大小固定)

List<Integer> list = Arrays.asList(1, 2, 3);
list.set(1, 10); // OK
list.add(2);//UnsupportedOperationException
List<Integer> list = List.of(1, 2, 3);
list.set(1, 10); // Fails

2.List.of参数不能为null,asList可以

List<Integer> list = Arrays.asList(1, 2, null); // OK
List<Integer> list = List.of(1, 2, null); // NullPointerException

3.asList对原数组的修改会影响返回列表

Integer[] array = {1,2,3};
List<Integer> list = Arrays.asList(array);
array[1] = 10;
System.out.println(list); // 输出 [1, 10, 3]
Integer[] array = {1,2,3};
List<Integer> list = List.of(array);
array[1] = 10;
System.out.println(list); // 输出 [1, 2, 3]

你可能感兴趣的:(java)