Collections.emptyList () vs. Neue Listeninstanz

Collections.emptyList() vs. Neue Listeninstanz

1. Einführung

In diesem kurzen Tutorial veranschaulichen wir den Unterschied zwischenCollections.emptyList() und einer neuen Listeninstanz.

2. Unveränderlichkeit

Die Kerndifferenz zwischenjava.util.Collections.emptyList() und einer neuen Liste, z. new ArrayList<>() ist Unveränderlichkeit.

Collections.emptyList() gibt eine Liste (java.util.Collections.EmptyList) zurück, die nicht geändert werden kann.

Wenn Sie eine neue Listeninstanz erstellen, können Sie diese je nach Implementierung ändern:

@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. Objekterstellung

Collection.emptyList() creates a new empty list instance only once, wie im Quellcode gezeigt:

public static final List EMPTY_LIST = new EmptyList<>();

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

4. Lesbarkeit

Wenn Sie explizit eine leere Liste erstellen möchten, drückteCollections.emptyList() die ursprüngliche Absicht besser aus, z. new ArrayList<>().

5. Fazit

In diesem auf den Punkt gebrachten Artikel haben wir uns auf die Unterschiede zwischenCollections.emptyList() und einer neuen Listeninstanz konzentriert.

Wie immer ist vollständiger Quellcodeover on GitHub verfügbar.