用于具有内在排序的类型接口。
`compareTo` 操作定义了一个对象的完全排序,可用于排序。
`Comparable` 接口应用于类型的自然排序。如果一个类型可以以多种方式排序,且其中没有一种是明显的自然排序,那么可能最好不使用 `Comparable` 接口,而提供单独的 Comparator。
建议 `Comparable` 的顺序与其操作符 `==` 等价性(如果 `a.compareTo(b) == 0
` 则 a == b
`),但这不是强制要求。例如,double 和 DateTime 都有 `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.isBefore 和 DateTime.isAfter,这两个运算符都与 `DateTime.compareTo` 相同。
构造函数
属性
- hashCode → int
- 此对象的哈希码。无设置器继承
- runtimeType → Type
- 对象的运行时类型表示。无设置器继承
方法
-
compareTo(
T other) → int - 比较此对象与另一个对象。
-
noSuchMethod(
Invocation invocation) → dynamic - 当访问不存在的方法或属性时调用。继承
-
toString(
) → String - 此对象的字符串表示。继承
运算符
-
operator ==(
Object other) → bool - 相等的运算符。继承
静态方法
-
compare(
Comparable a, Comparable b) → int - 比较两个可比较对象的比较器。