Disons que vous avez une liste d'entiers contenant vaues nullJava 8 - Liste de tri des entiers avec des valeurs nulles
List<Integer> integers = Arrays.asList(null, 9, 11, 7, 5, null);
Maintenant, si vous voulez obtenir une valeur maximale, vous pouvez essayer
OptionalInt max = integers.stream()
.mapToInt(Integer::valueOf)
.max();
Cette fonctionnerait si la liste ne contenait pas de null. Dans notre cas, il y aura une exception NullPointerException. Après quelques recherches, je peux voir une telle solution
Optional<Integer> max = integers.stream()
.max(Comparator.nullsFirst(Comparator.naturalOrder()));
Il fonctionne si l'on considère moins de nulls non NULL. Mais si vous voulez qu'ils soient plus et changer nullsFirst à nullsLast
Optional<Integer> max = integers.stream()
.max(Comparator.nullsLast(Comparator.naturalOrder()));
vous rencontrerez NullPointerException à nouveau.
Je suis intéressant - pourquoi nullsLast ne fonctionne pas dans ce cas étant donné que son doc indique qu'il est null-friendly? Et quelle est la meilleure façon de trier la liste des entiers contenant des zéros?
Merci pour vos idées!