Ich habe nach einer eleganten Lösung gesucht, um Nullwerte aus einer Liste zu entfernen. Ich stieß auf den folgenden Post , der besagt, dass ich list.removeAll(Collections.singletonList(null));
Dies löst jedoch eine UnsupportedOperationException aus, von der ich annehme, dass removeAll()
versucht, eine mutative Operation für die Immutable-Singleton-Sammlung durchzuführen. Ist das korrekt?
Wenn dies der Fall ist, was wäre eine typische Verwendung dieser singleList? Um eine Sammlung der Größe 1 zu repräsentieren, wenn Sie sicher sind, dass Sie nichts mit der Sammlung machen wollen?
Vielen Dank im Voraus.
Es funktioniert wie ein Zauber:
%Vor% Tatsächlich ist Collections.singletonList(null)
unveränderlich (was leider in Java [1] versteckt ist), aber die Ausnahme wird von Ihrer list
Variable ausgelöst. Offenbar ist es auch unveränderlich, wie im folgenden Beispiel:
Dieser Code wird ein UnsupportedOperationException
werfen. Wie Sie sehen können, ist singletonList()
in diesem Fall nützlich. Verwenden Sie sie, wenn der Clientcode eine schreibgeschützte Liste erwartet (sie wird nicht geändert), aber Sie möchten nur ein Element darin übergeben. singletonList()
ist (Thread-) sicher (wegen Unveränderlichkeit), schnell und kompakt.
[1] z. in scala gibt es eine separate Hierarchie für veränderbare und unveränderbare Sammlungen, die die API auswählen kann ob es dieses oder das andere akzeptiert (oder beide, da sie gemeinsame Basisschnittstellen haben)
Tags und Links java list collections