Collectors.toUnmodifiableList in Java-10

11

Wie erstellt man Unmodifiable List / Set / Map mit Collectors.toList/toSet/toMap , da toList (und ähnliches) Dokumente wie folgt sind:

  

Es gibt keine Garantien für den Typ , die Änderbarkeit, die Serialisierbarkeit oder die Thread-Sicherheit der zurückgegebenen Liste

Vor java-10 müssen Sie ein Function mit Collectors.collectingAndThen angeben, zum Beispiel:

%Vor%     
Eugene 05.03.2018, 09:06
quelle

2 Antworten

9

Mit java-10 ist dies viel einfacher und viel besser lesbar (IMO)

%Vor%

Intern ist es dasselbe wie Collectors.collectingAndThen , aber gibt eine Instanz von nicht modifizierbarem List zurück, die in java-9 hinzugefügt wurde.

    
Eugene 05.03.2018, 09:06
quelle
8

Zusätzlich, um einen dokumentierten Unterschied zwischen den beiden Implementierungen zu eliminieren ( collectingAndThen vs toUnmodifiableList ):

  

Der Collectors.toUnmodifiableList würde einen Collector zurückgeben   verbietet NULL-Werte und wird NullPointerException ausgeben, wenn dies der Fall ist   präsentiert mit einem null Wert.

%Vor%

und das liegt auch daran, dass die erste eine Instanz von Collections.UnmodifiableRandomAccessList erstellt, während die zweite eine Instanz von ImmutableCollections.ListN erstellt, die zur Liste der Attribute hinzufügt, die mit statische Fabrikmethoden.

    
nullpointer 05.03.2018 10:10
quelle

Tags und Links