Arrays.asList
返回可变的列表,而所返回的列表
List.of
是不可变的:
List<Integer> list = Arrays.asList(1, 2, null);list.set(1, 10); // OKList<Integer> list = List.of(1, 2, 3);list.set(1, 10); // Fails with UnsupportedOperationException
Arrays.asList
允许null元素,而
List.of
不允许:
List<Integer> list = Arrays.asList(1, 2, null); // OKList<Integer> list = List.of(1, 2, null); // Fails with NullPointerException
contains
行为与null不同:
List<Integer> list = Arrays.asList(1, 2, 3);list.contains(null); // Returns falseList<Integer> list = List.of(1, 2, 3);list.contains(null); // Fails with NullPointerException
Arrays.asList
返回所传递数组的视图,因此对数组的更改也将反映在列表中。对于
List.of
这是不正确的:
Integer[] array = {1,2,3};List<Integer> list = Arrays.asList(array);array[1] = 10;System.out.println(list); // Prints [1, 10, 3]Integer[] array = {1,2,3};List<Integer> list = List.of(array);array[1] = 10;System.out.println(list); // Prints [1, 2, 3]