gpt4 book ai didi

java - 在自定义创建的比较器中实现compare()方法

转载 作者:行者123 更新时间:2023-12-01 07:50:01 25 4
gpt4 key购买 nike

class IntegerComparator implements Comparator<Integer>
{
@Override
public int compare(Integer o1, Integer o2) {
if(o1 < o2)
return 1;
else if(o1 > o2)
return -1;
else
return 0;
}
}

它给出了降序。我知道这。我是盲目地记住的。我不明白为什么实现必须是这样的。

我希望结果按升序排列。因为按升序排列,如果取任意两个相邻元素,o1 应该始终小于 o2。但它给出了我不期望的降序。

有人可以揭开其背后的逻辑吗

编辑:

  • 交换元素时。是比较返回 1 的时候吗?

最佳答案

当第一个参数大于另一个参数时,结果必须是正数。当第一个参数较小时 - 结果为负数。您的实现给出了降序,因为您所做的与我刚刚编写的相反。如果您想要升序,只需将其乘以 -1 即可。这是因为,如果你从第一个数字中减去第二个数字,并且第一个数字更大 - 结果将是正数。

关于java - 在自定义创建的比较器中实现compare()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39699940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com