Beim Versuch, Collectors.toMap() zu verwenden, um einen Objektstrom in eine Karte umzuwandeln, tritt eine NullPointerException auf kann auftreten, wenn einer oder mehrere Werte im Stream null sind. Dieses Verhalten mag kontraintuitiv erscheinen, wenn man bedenkt, dass Karten Nullwerte speichern können.
Diese Ausnahme tritt aufgrund eines bekannten Fehlers in OpenJDK auf. Um dieses Problem zu entschärfen, steht eine Problemumgehung zur Verfügung:
Map<Integer, Boolean> collect = list.stream() .collect(HashMap::new, (m,v)->m.put(v.getId(), v.getAnswer()), HashMap::putAll);
Obwohl nicht elegant, löst dieser Ansatz das Problem effektiv. Die resultierende Karte enthält die Schlüssel-Wert-Paare aus dem Stream, einschließlich aller Nullwerte.
Beachten Sie, dass diese Problemumgehung eine Einschränkung hat: Wenn der Stream doppelte Schlüssel mit unterschiedlichen Werten enthält, ersetzt die Karte stillschweigend die vorhandenen Wert mit dem neuen. Um dieses Problem zu beheben, klicken Sie auf den Link im Kommentarbereich.
Das obige ist der detaillierte Inhalt vonWarum löst Collectors.toMap() eine NullPointerException mit Null-Eintragswerten aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!