【问题标题】:Comparator parameters比较器参数
【发布时间】:2021-10-04 16:03:51
【问题描述】:

我看到this 发布了关于使用 lambda 反转顺序的帖子,但即使使用传统的 Comparator 实现(或匿名内部类)也让我感到困惑的是:为什么将第二个参数与第一个参数进行比较会反转顺序?

例如:

public int compare(Integer o1, Integer o2) {
    return o2.compareTo(o1);
}

在上面的sn-p中,整数会被倒序排列。但是,o1.compareTo(o2) 会产生正常顺序。为什么切换比较顺序会起作用,为什么这会扩展到其他自定义比较器?

【问题讨论】:

  • a < bb < a 有什么区别?你在颠倒顺序。这就是它的作用。
  • 但不知道a > b,没有区别。
  • b < aa > b 的同义词。

标签: java comparator


【解决方案1】:

请记住,在比较 a to b 时,比较器分别返回 1, 0, and -1a > b, a == b and a < b

作为比较的结果反转您想要的-1, 0, and 1 的顺序。但要实现这一点,您实际上必须扭转不等式并比较 b to a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2021-05-29
    • 2013-03-25
    • 1970-01-01
    相关资源
    最近更新 更多