在 Integer.compare(a,b) 的文档中说,如果 a 小于 b,它将返回一个小于 0 的值,如果 a 大于 b,则返回一个大于 0 的值。
在我的代码中实现该方法后,我只看到它返回 -1,0 或 1。我现在的问题是,它是否也可以返回其他值,例如 -5?
我必须在覆盖 compareTo 方法的地方编写代码,它必须只返回 -1、0 或 1,没有其他值。在我的 compareTo 中,我使用 Integer.compare,所以我想知道是否会在任何情况下返回 -1,0,1 之外的值。
提前感谢您的帮助。
在我的代码中实现该方法后,我只看到它返回 -1,0 或 1。我现在的问题是,它是否也可以返回其他值,例如 -5?
是的,可以。当前的实现可能只返回你观察到的值,但没有什么可以阻止未来实现的变化。
我必须在覆盖 compareTo 方法的地方编写代码,它必须只返回 -1、0 或 1,没有其他值。在我的 compareTo 中,我使用 Integer.compare,所以我想知道是否会在任何情况下返回 -1,0,1 之外的值。
使用
Comparable.compareTo
(或Comparator.compare
,或类似方法)的结果,您应该只检查与零相关的结果,即:== 0
、< 0
或> 0
(或<=
或>=
)。
我觉得不会,但是很容易把这些返回值修改成[-1,0,1]。
代码如下:
int modifiedCompareTo(Integer a, Integer b) {
int res = a.compareTo(b);
return res == 0 ? 0 : res/Math.abs(res);
}