在Java中,return 0
,return1
和returning有什么区别?-1
compareTo()
a-b
如果a
更大,则结果为正(+1),否则,如果b
更大,则结果为负...如果它们是等于其0
在Java中,return 0
,return1
和returning有什么区别?-1
compareTo()
a-b
如果a
更大,则结果为正(+1),否则,如果b
更大,则结果为负...如果它们是等于其0
Answers:
从Comparable.compareTo(T)的参考文档中:
将此对象与指定对象进行比较。当此对象小于,等于或大于指定的对象时,返回负整数,零或正整数。
实现者必须确保所有x和y的sgn(x.compareTo(y))== -sgn(y.compareTo(x))。(这意味着x.compareTo(y)必须抛出异常,而y.compareTo(x)则抛出异常。)
实现者还必须确保该关系是可传递的:(x.compareTo(y)> 0 && y.compareTo(z)> 0)意味着x.compareTo(z)> 0。
最后,实现者必须确保对于所有z,x.compareTo(y)== 0意味着sgn(x.compareTo(z))== sgn(y.compareTo(z))。
强烈建议(但并非严格要求(x.compareTo(y)== 0)==(x.equals(y))。一般而言,任何实现Comparable接口且违反此条件的类都应明确指出这一事实。推荐的语言是“注意:此类具有与等式不一致的自然顺序”。
在前面的描述中,符号sgn(expression)表示数学符号函数,该函数定义为根据表达式的值为负,零还是正返回-1、0或1中的一个。
简而言之:
this.compareTo(that)
退货
该方法的实现确定<
>
and的实际语义==
(==
从Java的对象身份运算符的意义上来说,我并不是说)
"abc".compareTo("def")
将产生小于0的值,如abc
之前的字母顺序def
。
Integer.valueOf(2).compareTo(Integer.valueOf(1))
将产生大于0的值,因为2大于1。
注意:对于实现Comparable的类,在Javadocs中声明其compareTo()方法的语义是一种很好的做法。
注意:您应该阅读以下至少一项:
警告:你不应该依靠的compareTo存在的返回值-1
,0
和1
。你应该总是测试x < 0
,x == 0
,x > 0
分别。
sgn()
,不是直接的-1和1。您应该将其添加到简短版本中。
简而言之:(搜索您的情况)
它可用于排序,0表示“等于”,而-1表示“较少”和“更多(更大)”。
任何小于0的返回值都意味着左操作数较小,而如果值大于0,则左操作数较大。
strcmp()
C语言一样。
int x = thisObject.compareTo(anotherObject);
该compareTo()
方法返回一个具有以下特征的int:
If thisObject < anotherObject
If thisObject == anotherObject
If thisObject > anotherObject
System.out.println(A.compareTo(B)> 0?“ Yes”:“ No”)
如果A> B的值将返回“是”或“否”。