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.