Sự khác biệt giữa List.of và Arrays.asList là gì?

Bài viết được sự cho phép của tác giả Lê Chí Dũng
Arrays.asList
trả về một danh sách có thể thay đổi trong khi danh sách được trả về List.of
là không thay đổi :
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
cho phép các phần tử null trong khi List.of
không:
List<Integer> list = Arrays.asList(1, 2, null); // OKList<Integer> list = List.of(1, 2, null); // Fails with NullPointerException
contains
cư xử khác với null
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
trả về một khung nhìn của mảng đã qua, vì vậy những thay đổi đối với mảng cũng sẽ được phản ánh trong danh sách. Đối với List.of
điều này là không đúng sự thật:
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]
Bạn có thể quan tâm
- Tôi không phải là lập trình viên thực sự?(Công Nghệ)
- Principle thiết kế của các sản phẩm nổi tiếng(Công Nghệ)
- Vừa đủ để đi (go)(Công Nghệ)