java 中有两个比较的 Null 安全比较器

Null safe comparator with two compares in java

我有一个房间列表。这些房间可以由某个人在特定日期使用,或者计划在没有特定日期的情况下在未来使用。 一开始一切顺利,但由于我们允许日期为空值,所以我不能再使用这种排序方法了。 最重要的是,它应该首先按人排序,然后列出日期。空值应位于每个人员列表的底部。我尝试了一些 nullFirst(),但没能写出无错误的代码 :D 大多数在线示例只有一个比较,而不是两个。 (此人永远不会为空)

roomTOs.sort(Comparator
            .comparing(
                    personTO::getPersonName)
            .thenComparing(
                    personTO::getUsedDate));

如果我没理解错的话,你想要这样的东西:

roomTOs.sort(Comparator
            .comparing(
                    personTO::getPersonName)
            .thenComparing(
                    personTO::getUsedDate, Comparator.nullsLast(Comparator.naturalOrder()))
            );