IComparable 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
此接口对实现它的每个类的对象施加总排序。
[Android.Runtime.Register("java/lang/Comparable", "", "Java.Lang.IComparableInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public interface IComparable : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/lang/Comparable", "", "Java.Lang.IComparableInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type IComparable = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 派生
- 属性
- 实现
注解
此接口对实现它的每个类的对象施加总排序。 此排序称为类 的自然排序,类 compareTo 的方法称为其 自然比较方法。
实现此接口的对象的列表(和数组)可以按 (和Arrays#sort(Object[]) Arrays.sort) 自动Collections#sort(List) Collections.sort排序。 实现此接口的对象可用作 SortedMap 排序映射中的键或 SortedSet 排序集中的元素,而无需指定比较器比较器。
如果类的布尔值与e1.equals(e2)每个e1类e2C具有相同的布尔值,则表示类C的自然顺序与相等e1.compareTo(e2) == 0。 请注意, null 不是任何类的实例,应该 e.compareTo(null) 引发一个 NullPointerException 即使 e.equals(null) 返回 false。
强烈建议(虽然不需要)自然排序与相等。 因此,因为在将排序集(和排序映射)与自然排序不一致的元素(或键)一起使用时,没有显式比较器的行为“奇怪”。 具体而言,此类排序集(或排序映射)违反了在方法中 equals 定义的 set(或 map)的一般协定。
例如,如果一个键添加两个键 a , b 这样 (!a.equals(b) && a.compareTo(b) == 0) 一个排序集就不会使用显式比较器,则第二 add 个操作将返回 false(以及排序集的大小不会增加),因为 a 从 b 排序集的角度等效。
几乎所有Java实现Comparable的核心类都具有与等值一致的自然排序。 一个例外是 java.math.BigDecimal,其 java.math.BigDecimal#compareTo 自然排序等同于 BigDecimal 具有相同数值的对象和不同的表示形式(如 4.0 和 4.00)。 若要 java.math.BigDecimal#equals BigDecimal.equals() 返回 true,两 BigDecimal 个对象的表示形式和数值必须相同。
对于数学倾斜,定义给定类 C 的自然排序 的关系 为:
{@code
{(x, y) such that x.compareTo(y) <= 0}.
}
此总订单的 商 为:
{@code
{(x, y) such that x.compareTo(y) == 0}.
}
它紧随其后的是合同compareTo,即商是一个等效的关系C,自然排序是一个总顺序C。 当我们说类的自然排序 与相等时,这意味着自然排序的商是类 Object#equals(Object) equals(Object) 方法定义的等价关系:
{(x, y) such that x.equals(y)}.
换句话说,当类的自然排序与相等时,由方法的等价关系 equals 定义的等价类和方法商 compareTo 定义的等价类是相同的。
此接口是 Java Collections Framework 的成员。
已在 1.2 中添加。
适用于 . 的 java.lang.ComparableJava 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
属性
| 名称 | 说明 |
|---|---|
| Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
| JniIdentityHashCode |
返回包装实例的值 |
| JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
| JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
| PeerReference |
返回JniObjectReference包装的Java对象实例。 (继承自 IJavaPeerable) |
方法
| 名称 | 说明 |
|---|---|
| CompareTo(Object) |
将此对象与指定的顺序对象进行比较。 |
| Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
| Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
设置由 |
| SetJniManagedPeerState(JniManagedPeerStates) |
此接口对实现它的每个类的对象施加总排序。 (继承自 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
设置由 |
| UnregisterFromRuntime() |
取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
此接口对实现它的每个类的对象施加总排序。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |