T
,这个对象可能是相对于对象的类型
public interface Comparable<T>
列表(数组),实现这个接口可以自动排序的Collections.sort
对象(和Arrays.sort
)。实现此接口可以作为一个sorted map或在sorted set元素的键的对象,而不需要指定一个comparator。
一类C的自然顺序说的当且仅当e1.compareTo(e2) == 0具有相同的布尔值为每e1和类C e2 e1.equals(e2)是空的符合等于。注意,null不是任何类的实例,并e.compareTo(null)丢个NullPointerException即使e.equals(null)返回false。
这是强烈建议(但不是必需的),自然的顺序是一致的平等。这是因为有序集合(排序图)没有明确的比较“奇怪”的行为时,他们使用的元素(或键)的自然顺序是不等于。特别是,这样一个有序集合(或排序图)违反总承包集(或Map),这是在equals定义的方法。
例如,如果加两键a和b这样(!a.equals(b) && a.compareTo(b) == 0)
来排序,不使用显式的比较,二add操作返回假(和排序设置大小不增加)因为a和b从排序的角度相等。
几乎所有的java核心类实现Comparable有自然的顺序是一致的平等。一个例外是java.math.BigDecimal,其自然顺序等同于BigDecimal对象平等的价值观和不同的精度(如4和4)。
对于数学上的倾斜,空关系定义自然顺序在一个给定的类C:
{(x,y),x.compareto(Y)< = 0 }。这个总的顺序是:空商
{(x,y),x.compareto(Y)= = 0 }。紧随其后,从 compareTo,商是一个空 C等价关系合同,这自然是一个z-84563dc7-67ae-4fd8订购空总序- a365-b587188957f8。当我们说一类的自然顺序是空符合等于,意味着我们的自然排序的商是由类的
equals(Object)
方法定义的等价关系:
{(x,y),x.equals(y)}。
该接口的 Java Collections Framework成员。
Comparator
int compareTo(T o)
实现者必须确保所有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。
最后,作者必须保证x.compareTo(y)==0意味着sgn(x.compareTo(z)) == sgn(y.compareTo(z)),所有z。
这是强烈建议,但空不严格要求(x.compareTo(y)==0) == (x.equals(y))。一般来说,任何类实现的接口,Comparable违反此条件应明确指出这个事实。推荐的语言是“注意:这个类有一个自然的排序,是不一致的。”
在前面描述的符号,sgn(null表达)指定数学零符号函数,其定义为返回一个-1,0,或1根据是否空表达值为负,零或正。
o
要比较的对象。
NullPointerException
-指定对象是否为空
ClassCastException
-如果指定对象类型阻止其与该对象。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.