Collectors.toMap() がエントリ値が null の NullPointerException をスローするのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-11 11:46:03
オリジナル
611 人が閲覧しました

Why does Collectors.toMap() throw a NullPointerException with null entry values?

Collectors.toMap() で Null エントリ値を持つ NullPointerException

Collectors.toMap() を利用してオブジェクトのストリームをマップに変換しようとすると、NullPointerException が発生するストリーム内の 1 つ以上の値が null の場合に発生する可能性があります。マップが null 値を保持できることを考えると、この動作は直観に反しているように思えるかもしれません。

この例外は、OpenJDK の既知のバグが原因で発生します。この問題を軽減するには、次の回避策があります。

Map<Integer, Boolean> collect = list.stream()
        .collect(HashMap::new, (m,v)->m.put(v.getId(), v.getAnswer()), HashMap::putAll);
ログイン後にコピー

このアプローチは洗練されたものではありませんが、問題を効果的に解決します。結果のマップには、ストリームのキーと値のペア (null 値も含む) が含まれます。

この回避策には制限があることに注意してください。ストリームに異なる値を持つ重複キーが含まれている場合、マップは既存のキーをサイレントに置き換えます。新しいものでの価値。これに対処するには、コメントセクションにあるリンクを参照してください。

以上がCollectors.toMap() がエントリ値が null の NullPointerException をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート