Lorsque vous tentez d'utiliser Collectors.toMap() pour transformer un flux d'objets en carte, une NullPointerException peut survenir si une ou plusieurs des valeurs du flux sont nulles. Ce comportement peut sembler contre-intuitif, étant donné que les cartes sont capables de contenir des valeurs nulles.
Cette exception se produit en raison d'un bug connu dans OpenJDK. Pour atténuer ce problème, une solution de contournement est disponible :
Map<Integer, Boolean> collect = list.stream() .collect(HashMap::new, (m,v)->m.put(v.getId(), v.getAnswer()), HashMap::putAll);
Bien qu'elle ne soit pas élégante, cette approche résout efficacement le problème. La carte résultante contiendra les paires clé-valeur du flux, y compris toutes les valeurs nulles.
Notez que cette solution de contournement a une limitation : si le flux contient des clés en double avec des valeurs différentes, la carte remplacera silencieusement la clé existante. valeur avec le nouveau. Pour résoudre ce problème, reportez-vous au lien fourni dans la section commentaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!