Java9为列表引入了新的工厂方法,List.of
List<String> strings = List.of("first", "second");
以前的选项和新的选项有什么不同?也就是说,这两者之间有什么区别:
Arrays.asList(1, 2, 3);
还有这个:
List.of(1, 2, 3);
发布于 2017-10-05 14:41:03
当List.of
返回的列表为immutable时,Arrays.asList
返回可变列表
List<Integer> list = Arrays.asList(1, 2, null);
list.set(1, 10); // OK
List<Integer> list = List.of(1, 2, 3);
list.set(1, 10); // Fails with UnsupportedOperationException
Arrays.asList
允许空元素,而List.of
不允许:
List<Integer> list = Arrays.asList(1, 2, null); // OK
List<Integer> list = List.of(1, 2, null); // Fails with NullPointerException
对于空值,contains
的行为有所不同:
List<Integer> list = Arrays.asList(1, 2, 3);
list.contains(null); // Returns false
List<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]
https://stackoverflow.com/questions/46579074
复制相似问题