位置:java.lang.Comparable<T>
类型:interface
用途:
这个接口规定了实现它的每个类的对象进行整体排序。这个顺序被称为类的自然顺序,和类的compareTo方法作为它的自然比较方法提及。列表(和数组)实现此接口的对象可以自动Collections.sort(和Arrays.sort)进行排序。实现该接口的对象可被用作在一个有序映射或作为有序集合的元素的键,而不需要指定一个比较器。对于C类的自然顺序被说成是与equals一致当且仅当e1.compareTo(E2)== 0具有相同的布尔值作为e1.equals(E2)类C.注意的每e1和e2是null不是任何类的实例,并e.compareTo(空)应该抛出一个NullPointerException异常,即使e.equals(空)返回false。
强烈推荐(虽然不是必需的)使自然排序与equals一致。这是因为有序集合(和有序映射)没有显式比较行为表现“怪异”,当它们与元素(或键),它的自然排序与equals不一致使用。尤其是,这样的有序集合(或有序映射表)违背了集(或地图),这是在equals方法定义的一般合同。
例如,如果加上两个键a和b,使得(!a.equals(二)
事实上,实现可比所有Java核心类的自然排序是与equals一致。java.math.BigDecimal是个例外,它的自然排序相当于BigDecimal对象具有相同的价值观和不同的精度(比如4.0和4.00)。 对于数学上的倾斜,即限定在一个给定的类C中的自然排序的关系是:
例如,如果加上两个键a和b,使得(!a.equals(二)
事实上,实现可比所有Java核心类的自然排序是与equals一致。java.math.BigDecimal是个例外,它的自然排序相当于BigDecimal对象具有相同的价值观和不同的精度(比如4.0和4.00)。 对于数学上的倾斜,即限定在一个给定的类C中的自然排序的关系是:
{(x, y) such that x.compareTo(y) <= 0}.
这个顺序的商:
{(x, y) such that x.compareTo(y) == 0}.
它从compareTo的协定,商是C的等价关系紧跟,那自然排序是C的整体排序。当我们说类的自然排序与equals一致的,我们是指商数为自然顺序是由类的equals(Object)方法定义的等价关系:
{(x, y) such that x.equals(y)}.
此类是Java Collection Framework中的一员
参数:<T>
父类:
接口:
方法
method: int compareTo(T o)
use:拿这个对象与指定对象相比排序。负整数,零或正整数,来确认此对象比指定对象小于,等于,或更大。
此接口的实现必须保证sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) 对所有的x和y。(这意味着 x.compareTo(y)必须抛异常如果y.compareTo(x)抛出了异常)
接口实现者必须保证关系的传递性:(x.compareTo(y)>0 && y.compareTo(z)>0)意味着x.compareTo(z)>0.
最后,接口实现者保证如果 x.compareTo(y)==0 意味着对所有的z,满足 sgn(x.compareTo(z)) == sgn(y.compareTo(z))。
强烈建议,但是不是严格要求必须满足 (x.compareTo(y)==0) == (x.equals(y)).通常的讲,任何实现comparable接口并且违法这个条件必须明确指出此事实。推荐的语言:Note,此类有自然的排序但是不满足equals.
上文所说的sgn 是数学中的符号函数,返回一个整型变量,指出参数的正负号。语法Sgn(number), number 参数是任何有效的数值表达式。返回值如果数字大于0,则Sgn 返回1,数字等于0,则返回0,数字小于0,则返回-1,数字参数的符号决定了Sgn 函数的返回值。
specifiedBy:
overrides:
param:o 要比较的对象
return:负整数,零或正整数,来确认此对象比指定对象小于,等于,或更大。
exception:
use:拿这个对象与指定对象相比排序。负整数,零或正整数,来确认此对象比指定对象小于,等于,或更大。
此接口的实现必须保证sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) 对所有的x和y。(这意味着 x.compareTo(y)必须抛异常如果y.compareTo(x)抛出了异常)
接口实现者必须保证关系的传递性:(x.compareTo(y)>0 && y.compareTo(z)>0)意味着x.compareTo(z)>0.
最后,接口实现者保证如果 x.compareTo(y)==0 意味着对所有的z,满足 sgn(x.compareTo(z)) == sgn(y.compareTo(z))。
强烈建议,但是不是严格要求必须满足 (x.compareTo(y)==0) == (x.equals(y)).通常的讲,任何实现comparable接口并且违法这个条件必须明确指出此事实。推荐的语言:Note,此类有自然的排序但是不满足equals.
上文所说的sgn 是数学中的符号函数,返回一个整型变量,指出参数的正负号。语法Sgn(number), number 参数是任何有效的数值表达式。返回值如果数字大于0,则Sgn 返回1,数字等于0,则返回0,数字小于0,则返回-1,数字参数的符号决定了Sgn 函数的返回值。
specifiedBy:
overrides:
param:o 要比较的对象
return:负整数,零或正整数,来确认此对象比指定对象小于,等于,或更大。
exception:
throw NullPointerException 如果指定对象为null
throw ClassCastException
如果指定对象的类型不允许与这个对象相比