Comparable<T>抽象 接口

用于具有内在排序的类型接口。

`compareTo` 操作定义了一个对象的完全排序,可用于排序。

`Comparable` 接口应用于类型的自然排序。如果一个类型可以以多种方式排序,且其中没有一种是明显的自然排序,那么可能最好不使用 `Comparable` 接口,而提供单独的 Comparator

建议 `Comparable` 的顺序与其操作符 `==` 等价性(如果 `a.compareTo(b) == 0` 则 a == b`),但这不是强制要求。例如,doubleDateTime 都有 `compareTo` 方法,它们不与 `operator ==` 对应。对于双精度浮点数,`compareTo` 方法比等于操作更精确,而对于 `DateTime`,则更不精确。

示例

(0.0).compareTo(-0.0);   // => 1
0.0 == -0.0;             // => true
var now = DateTime.now();
var utcNow = now.toUtc();
now == utcNow;           // => false
now.compareTo(utcNow);   // => 0

`Comparable` 接口不意味着存在比较运算符 `<`、`<=`、`>` 和 `>=`。这些只有在排序是小于/大于排序时(即自然地使用“小于”一词描述两个元素的顺序时)才应定义。

如果等价运算符和 `compareTo` 不一致,则比较运算符应遵循等价运算符,并可能也与 `compareTo` 不一致。否则,它们应匹配 `compareTo` 方法,以便 `a < b` 当且仅当 `a.compareTo(b) < 0`。

`double` 类定义了与等价性兼容的比较运算符。这些运算符与 `double.compareTo` 在 -0.0 和 NaN 上的表现不同。

`DateTime` 类没有定义比较运算符,而是有一组更精确命名的运算符:DateTime.isBeforeDateTime.isAfter,这两个运算符都与 `DateTime.compareTo` 相同。

实现者

构造函数

Comparable()

属性

hashCode int
此对象的哈希码。
无设置器继承
runtimeType Type
对象的运行时类型表示。
无设置器继承

方法

compareTo(T other) int
比较此对象与另一个对象。
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
继承
toString() String
此对象的字符串表示。
继承

运算符

operator ==(Object other) bool
相等的运算符。
继承

静态方法

compare(Comparable a, Comparable b) int
比较两个可比较对象的比较器