Integer.compare的可能值

问题描述 投票:0回答:2

在 Integer.compare(a,b) 的文档中说,如果 a 小于 b,它将返回一个小于 0 的值,如果 a 大于 b,则返回一个大于 0 的值。

在我的代码中实现该方法后,我只看到它返回 -1,0 或 1。我现在的问题是,它是否也可以返回其他值,例如 -5?

我必须在覆盖 compareTo 方法的地方编写代码,它必须只返回 -1、0 或 1,没有其他值。在我的 compareTo 中,我使用 Integer.compare,所以我想知道是否会在任何情况下返回 -1,0,1 之外的值。

提前感谢您的帮助。

java integer compare
2个回答
0
投票

在我的代码中实现该方法后,我只看到它返回 -1,0 或 1。我现在的问题是,它是否也可以返回其他值,例如 -5?

是的,可以。当前的实现可能只返回你观察到的值,但没有什么可以阻止未来实现的变化。

我必须在覆盖 compareTo 方法的地方编写代码,它必须只返回 -1、0 或 1,没有其他值。在我的 compareTo 中,我使用 Integer.compare,所以我想知道是否会在任何情况下返回 -1,0,1 之外的值。

使用

Comparable.compareTo
(或
Comparator.compare
,或类似方法)的结果,您应该只检查与零相关的结果,即:
== 0
< 0
> 0
(或
<=
>=
)。


-1
投票

我觉得不会,但是很容易把这些返回值修改成[-1,0,1]。

代码如下:

int modifiedCompareTo(Integer a, Integer b) {
    int res = a.compareTo(b);
    return res == 0 ? 0 : res/Math.abs(res);
} 
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.