Nullwerte in Collectors.toMap: Eine Erklärung und Java 8-Lösungen
Die Collectors.toMap-Methode von Java 8 löst eine NullPointerException aus, wenn sie auf null trifft Werte als zweites Argument, obwohl Karten Nullwerte als Werte zulassen. Dieses eigenartige Verhalten hat bei Entwicklern für Verwirrung gesorgt.
Grund für das Verhalten
Der zugrunde liegende Grund für dieses Verhalten ist ein bekannter Fehler in der OpenJDK-Implementierung von Collectors.toMap. Die Methode versucht, die aktuellen und neuen Werte für einen bestimmten Schlüssel mithilfe der HashMap.merge-Operation zusammenzuführen. Dieser Vorgang verarbeitet Nullwerte jedoch nicht ordnungsgemäß, was zu der Ausnahme führt.
Java 8-Lösung
Um dieses Problem zu umgehen, können Sie den folgenden Ansatz verwenden :
Map
Dieser Code erstellt eine neue HashMap und verwendet einen benutzerdefinierten Collector, um sie zu füllen, indem er die Put-Methode direkt aufruft. Dieser Ansatz ermöglicht das Hinzufügen von Nullwerten.
Weitere Überlegungen
Im Gegensatz zu Collectors.toMap ersetzt die bereitgestellte Lösung Werte stillschweigend, wenn derselbe Schlüssel mehrmals vorkommt. Wenn dies nicht gewünscht ist, sollten Sie alternative Lösungen in Betracht ziehen, die im Kommentarbereich bereitgestellt werden.
Wenn Sie den Grund für die NullPointerException verstehen und die Problemumgehung verwenden, können Sie Nullwerte effektiv verarbeiten, wenn Sie Collectors.toMap verwenden.
Das obige ist der detaillierte Inhalt vonWarum löst Collectors.toMap eine NullPointerException für Nullwerte aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!