假设你有一个整数列表,其中包含null值。
现在,如果您想获取最大值,可以尝试使用
如果您认为 null 值小于非 null 值,则此方法可行。但如果您想要 null 值更大,并将 nullsFirst 更改为 nullsLast。
List<Integer> integers = Arrays.asList(null, 9, 11, 7, 5, null);
现在,如果您想获取最大值,可以尝试使用
OptionalInt max = integers.stream()
.mapToInt(Integer::valueOf)
.max();
如果列表不包含空值,这个方法就能够正常工作。但在我们的情况下,会出现NullPointerException异常。经过一番研究,我找到了以下解决方案:
Optional<Integer> max = integers.stream()
.max(Comparator.nullsFirst(Comparator.naturalOrder()));
如果您认为 null 值小于非 null 值,则此方法可行。但如果您想要 null 值更大,并将 nullsFirst 更改为 nullsLast。
Optional<Integer> max = integers.stream()
.max(Comparator.nullsLast(Comparator.naturalOrder()));
那么您将再次遇到NullPointerException异常。
我很感兴趣 - 为什么在这种情况下nullsLast不起作用,考虑到它的文档声明它是对null友好的?那么对于包含null的整数列表,最佳排序方法是什么?
谢谢您的想法!