空安全比较器,在Java中有两个比较

时间:2019-03-20 11:15:38

标签: java null comparator

我有一个房间清单。这些房间可以由某个人在特定日期使用,也可以计划将来在没有特定日期的情况下使用。 起初它运行得非常好,但是由于我们允许日期使用空值,因此我不能再使用这种排序方法了。 最重要的是,应首先按人对它进行排序,然后再列出日期。空值应位于每个人列表的底部。我尝试使用nullFirst()进行了一些尝试,但是没有编写出无错误的代码:D大多数在线示例仅具有一个比较,而不是两个。 (此人永远不会为空)

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

1 个答案:

答案 0 :(得分:2)

如果我理解正确,那么您需要这样的东西:

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