是什么返回的区别0
,返回1
和返回-1
在compareTo()
Java中?
Sea*_*oyd 83
来自Comparable.compareTo(T)的参考文档:
将此对象与指定的对象进行比较以获得顺序.返回负整数,零或正整数,因为此对象小于,等于或大于指定对象.
实现者必须确保所有x和y的sgn(x.compareTo(y))== -sgn(y.compareTo(x)).(这意味着如果y.compareTo(x)抛出异常,x.compareTo(y)必须抛出异常.)
实现者还必须确保关系是传递的:(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接口并且违反此条件的类都应该清楚地表明这一事实.推荐的语言是"注意:此类具有与equals不一致的自然顺序."
在前面的描述中,符号sgn(表达式)指定数学符号函数,其被定义为根据表达式的值是负,零还是正来返回-1,0或1中的一个.
简而言之:
this.compareTo(that)
Run Code Online (Sandbox Code Playgroud)
回报
其中这个方法的实现决定了实际的语义<
>
和==
(我不是指==
java的对象标识运算符)
"abc".compareTo("def")
Run Code Online (Sandbox Code Playgroud)
将产生小于0的东西,abc
按字母顺序排列def
.
Integer.valueOf(2).compareTo(Integer.valueOf(1))
Run Code Online (Sandbox Code Playgroud)
会产生大于0的东西,因为2大于1.
注意:对于实现Comparable的类来说,优雅的做法是在javadocs中声明它的compareTo()方法的语义.
注意:您应该至少阅读以下内容之一:
警告:你永远不应该依赖compareTo的返回值-1
,0
和1
.你应该总是测试x < 0
,x == 0
,x > 0
,分别.
Col*_*ert 46
我用这个助记符:
a.compareTo(b) < 0 // a < b
a.compareTo(b) > 0 // a > b
a.compareTo(b) == 0 // a == b
Run Code Online (Sandbox Code Playgroud)
保留标志并始终将结果compareTo()
与0 进行比较
use*_*506 25
简而言之:(搜索你的情况)
归档时间: |
|
查看次数: |
145519 次 |
最近记录: |