当前位置: 首页 > 知识库问答 >
问题:

比较器参数

何嘉运
2023-03-14

我看到了这篇关于用lambdas颠倒顺序的文章,但有一件事甚至让我对传统的比较器实现(或匿名内部类)感到困惑:为什么将第二个参数与第一个参数进行比较会颠倒顺序?

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

共有1个答案

钱安和
2023-03-14

请记住,在比较a和b时,比较器分别为a>b返回1、0和-1,a==b和a

若要颠倒-1、0和1的比较结果顺序。但是要实现这一点,实际上必须颠倒不等式,并将B与进行比较。

 类似资料:
  • 我有一个关于compareTo函数如何帮助比较器排序的问题,即o1。比较(o2)与o2。比较(o1) 如果两个字符串相等,则此方法返回0,否则返回正值或负值。如果第一个字符串在词典上大于第二个字符串,则结果为正,否则结果为负。 上面的陈述很简单,但是为什么o1.compare(o2)会给我一个升序,而o2.compare(o1)给了我一个降序? 如果我有整数值“5,10,3”,我得到3,5,10和

  • 我有以下课程: 这编译没有问题。但是,如果我尝试像这样内联变量: 我发现以下编译错误: 如何编写此表达式以使Java正确理解参数?

  • 假设我有一个双人课 我希望对它进行排序,首先是第一个值,然后是第二个值。现在,如果我这样做 一切都很好,列表按对的第一个值排序,但如果我这样做 它因错误而失败 好吧,所以它可能无法推断参数,所以如果我这样做 它因错误而失败 为什么它适用于comparing()而不适用于comparing()。然后比较()?

  • 我正在实现插入排序方法。这是我的代码要求。 方法insertionSort是一个不返回任何内容的静态方法 它有两个参数:通用数组和比较器(通用) 它使用合并排序算法对泛型数组进行排序 我的问题是:调用main方法时,比较器参数c使用什么? 到目前为止,我有一些未实现的方法(merge sort an isAnagaram)忽略这些 我环顾了一下堆栈溢出,并在比较器界面上搜索了很多,但我真的找不到任

  • 问题内容: 假设我有一对班 我希望先按第一个值排序,然后再按第二个值排序。现在,如果我这样做 一切正常,列表按对的第一个值排序,但是如果我这样做 它因错误而失败 好的,所以它可能无法推断参数,所以如果我这样做 它因错误而失败 为什么它对compare()而不是compare()。thenComparing()有效? 问题答案: 该错误似乎与的通用参数有关。一种解决方法是尝试使用显式类型: 请注意,