Valeurs nulles dans Collectors.toMap : une explication et des solutions Java 8
La méthode Collectors.toMap de Java 8 renvoie une NullPointerException lorsqu'elle rencontre null valeurs comme deuxième argument, malgré les cartes autorisant des valeurs nulles comme valeurs. Ce comportement particulier a semé la confusion parmi les développeurs.
Raison derrière le comportement
La raison sous-jacente de ce comportement est un bug connu dans l'implémentation OpenJDK de Collectors.toMap. La méthode tente de fusionner les valeurs actuelles et nouvelles pour une clé donnée à l'aide de l'opération HashMap.merge. Cependant, cette opération ne gère pas correctement les valeurs nulles, ce qui entraîne l'exception.
Solution Java 8
Pour contourner ce problème, vous pouvez utiliser l'approche suivante :
Carte
Ce code crée un nouveau HashMap et utilise un collecteur personnalisé pour le remplir en appelant directement la méthode put. Cette approche permet d'ajouter des valeurs nulles.
Autres considérations
Contrairement à Collectors.toMap, la solution fournie remplacera silencieusement les valeurs si la même clé apparaît plusieurs fois. Si cela n'est pas souhaité, vous pouvez envisager des solutions alternatives proposées dans la section commentaires.
En comprenant la raison derrière l'exception NullPointerException et en utilisant la solution de contournement, vous pouvez gérer efficacement les valeurs nulles lors de l'utilisation de Collectors.toMap.
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!