整數的排序名單比方說你有一個包含空vaues的Java 8 - 用null
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()));
它的工作原理,如果你認爲零值小於非零。但是,如果你想他們是更大的,改變nullsFirst到nullsLast
Optional<Integer> max = integers.stream()
.max(Comparator.nullsLast(Comparator.naturalOrder()));
,那麼你還會再見面的NullPointerException。
我很有趣 - 爲什麼nullsLast在這種情況下不起作用,因爲它的文檔聲明它是無效的? 什麼是排序包含空值的整數列表的最佳方法?
感謝您的想法!