Collections.emptyList () so với Phiên bản danh sách mới

1. Giới thiệu

Trong hướng dẫn ngắn này, chúng tôi sẽ minh họa sự khác biệt giữa Collections.emptyList () và một phiên bản danh sách mới.

2. Tính bất biến

Sự khác biệt cốt lõi giữa java.util.Collections.emptyList () và một danh sách mới, ví dụ như ArrayList () mới là tính bất biến.

Collections.emptyList () trả về một danh sách ( java.util.Collections.EmptyList ) không thể sửa đổi.

Khi tạo một phiên bản danh sách mới, bạn có thể sửa đổi nó tùy thuộc vào việc triển khai:

@Test public void givenArrayList_whenAddingElement_addsNewElement() { List mutableList = new ArrayList(); mutableList.add("test"); assertEquals(mutableList.size(), 1); assertEquals(mutableList.get(0), "test"); } @Test(expected = UnsupportedOperationException.class) public void givenCollectionsEmptyList_whenAdding_throwsException() { List immutableList = Collections.emptyList(); immutableList.add("test"); }

3. Tạo đối tượng

Collection.emptyList () chỉ tạo một phiên bản danh sách trống mới một lần , như được hiển thị trong mã nguồn:

public static final List EMPTY_LIST = new EmptyList(); public static final  List emptyList() { return (List) EMPTY_LIST; }

4. Khả năng đọc

Khi bạn muốn tạo một danh sách trống một cách rõ ràng, thì Collections.emptyList () thể hiện ý định ban đầu tốt hơn, ví dụ: new ArrayList () .

5. Kết luận

Trong phần này, chúng tôi đã tập trung vào sự khác biệt giữa Collections.emptyList () và một phiên bản danh sách mới.

Như mọi khi, mã nguồn đầy đủ có sẵn trên GitHub.