【问题标题】:Null safe comparator with two compares in java在java中具有两个比较的空安全比较器
【发布时间】:2019-03-20 19:35:25
【问题描述】:

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

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

【问题讨论】:

  • 换句话说,你想先按名称排序。如果名称相同,则按日期排列,为空的日期视为“最新”。
  • 完全是@Sweeper

标签: java null comparator


【解决方案1】:

如果我理解正确,你想要这样的东西:

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

【讨论】:

  • 现在我觉得自己很愚蠢。这看起来很简单,我只是没有想到将它放在“thenComparing”方法中。我尝试了很多复杂的东西,因为我对 Comparator 的理解太差了。非常感谢!
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 2021-11-18
  • 2022-07-02
  • 1970-01-01
  • 2011-01-24
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多