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

11714

Bài viết được sự cho phép của tác giả Lê Chí Dũng

Arrays.asListtrả về một danh sách có thể thay đổi trong khi danh sách được trả về List.oflà 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
  4 ứng dụng của Array.from
  Cấu trúc dữ liệu List trong Python và các thao tác cơ bản

Arrays.asListcho phép các phần tử null trong khi List.ofkhô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.asListtrả 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ài viết gốc được đăng tải tại lcdung.top
Có thể bạn quan tâm: