IComparator 接口

定义

比较函数,该函数对某些对象集合施加 总排序

[Android.Runtime.Register("java/util/Comparator", "", "Java.Util.IComparatorInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public interface IComparator : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/Comparator", "", "Java.Util.IComparatorInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type IComparator = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
实现

注解

比较函数,该函数对某些对象集合施加 总排序 。 比较器可以传递给排序方法(如 Collections#sort(List,Comparator) Collections.sortArrays#sort(Object[],Comparator) Arrays.sort),以允许精确控制排序顺序。 比较器还可用于控制某些数据结构(如 SortedSet 排序集或 SortedMap 排序映射)的顺序,或者为没有可比自然排序的对象集合提供排序。

据说,比较器c对一组元素S施加的排序与等值一致,前提是c.compare(e1, e2)==0每个元素的布尔值与每个e1元素e2S具有相同的布尔值e1.equals(e2)

使用能够实施与排序集(或已排序映射)不一致的排序的比较器时,应谨慎行事。 假设具有显式比较器的 c 排序集(或已排序映射)与从集 S绘制的元素(或键)一起使用。 如果所cS施加的排序与相等不一致,则排序集(或排序映射)的行为将“奇怪”。 特别是排序集(或排序映射)将违反集(或地图)的一般协定,该协定在定义方面 equals

例如,假设一个添加两个元素,这样(a.equals(b) && c.compare(a, b) != 0)一个元素与比较器c一起为空TreeSetba 第二 add 个操作将返回 true(树集的大小将增加),因为 ab 树集的角度不同,这与方法的 Set#add Set.add 规范相反。

注意:比较器通常也是java.io.Serializable实现的好主意,因为它们可用作可序列化数据结构(如,)TreeSetTreeMap中的排序方法。 为了使数据结构成功序列化,比较器(如果提供)必须实现 Serializable

对于数学倾向,定义给定比较器c对给定对象S集施加的强制排序的关系为:

{(x, y) such that c.compare(x, y) &lt;= 0}.

此总订单的商为:

{(x, y) such that c.compare(x, y) == 0}.

它紧随其后的是合同compare,该商是一个等价关系S,强加的排序是一个总顺序S。 当我们说,施加Sc排序与相等时,是指排序的商是对象Object#equals(Object) equals(Object)方法定义的等价关系:

{(x, y) such that x.equals(y)}.

换句话说,当强制排序与相等时,由方法的 equals 等价关系定义的等价类和方法商 compare 定义的等价类是相同的。

与不同 Comparable,比较器可以选择允许比较 null 参数,同时保持等效关系的要求。

此接口是 Java 集合框架的成员

已在 1.2 中添加。

适用于 . 的 java.util.ComparatorJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

属性

Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
JniIdentityHashCode

返回包装实例的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
PeerReference

返回 JniObjectReference 包装的 Java 对象实例。

(继承自 IJavaPeerable)

方法

Compare(Object, Object)

比较其两个订单参数。

Comparing(IFunction)

接受从类型T中提取java.lang.Comparable Comparable排序键的函数,并返回Comparator<T>按该排序键进行比较的函数。

Comparing(IFunction, IComparator)

接受从类型 T中提取排序键的函数,并返回 Comparator<T> 使用该排序键使用指定的 Comparator排序键进行比较的函数。

ComparingDouble(IToDoubleFunction)

接受从类型T中提取double排序键的函数,并返回Comparator<T>按该排序键进行比较的函数。

ComparingInt(IToIntFunction)

接受从类型T中提取int排序键的函数,并返回Comparator<T>按该排序键进行比较的函数。

ComparingLong(IToLongFunction)

接受从类型T中提取long排序键的函数,并返回Comparator<T>按该排序键进行比较的函数。

Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
Equals(Object)

指示其他对象是否为 ”等于”此比较器。

Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
NaturalOrder()

返回一个比较器,该比较器按自然顺序比较 Comparable 对象。

NullsFirst(IComparator)

返回一个 null 友好比较器,该比较器认为 null 小于非 null。

NullsLast(IComparator)

返回一个 null 友好比较器,该比较器认为 null 大于非 null。

Reversed()

返回一个比较器,该比较器施加此比较器的反向排序。

ReverseOrder()

返回一个比较器,该比较器施加 em>自然排序</em> 的<反向。

SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

比较函数,该函数对某些对象集合施加 总排序

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
ThenComparing(IComparator)

返回字典顺序比较器与另一个比较器。

ThenComparing(IFunction)

返回字典顺序比较器与提取排序键的 Comparable 函数。

ThenComparing(IFunction, IComparator)

返回一个字典顺序比较器,该比较器包含一个函数,该函数提取要与给定 Comparator的比较键。

ThenComparingDouble(IToDoubleFunction)

返回字典顺序比较器与提取排序键的 double 函数。

ThenComparingInt(IToIntFunction)

返回字典顺序比较器与提取排序键的 int 函数。

ThenComparingLong(IToLongFunction)

返回字典顺序比较器与提取排序键的 long 函数。

UnregisterFromRuntime()

取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

比较函数,该函数对某些对象集合施加 总排序

GetJniTypeName(IJavaPeerable)

比较函数,该函数对某些对象集合施加 总排序

适用于