IComparator 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
比较函数,该函数对某些对象集合施加 总排序 。
[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.sort
或 Arrays#sort(Object[],Comparator) Arrays.sort
),以允许精确控制排序顺序。 比较器还可用于控制某些数据结构(如 SortedSet 排序集或 SortedMap 排序映射)的顺序,或者为没有可比自然排序的对象集合提供排序。
据说,比较器c
对一组元素S
施加的排序与等值一致,前提是c.compare(e1, e2)==0
每个元素的布尔值与每个e1
元素e2
S
具有相同的布尔值e1.equals(e2)
。
使用能够实施与排序集(或已排序映射)不一致的排序的比较器时,应谨慎行事。 假设具有显式比较器的 c
排序集(或已排序映射)与从集 S
绘制的元素(或键)一起使用。 如果所c
S
施加的排序与相等不一致,则排序集(或排序映射)的行为将“奇怪”。 特别是排序集(或排序映射)将违反集(或地图)的一般协定,该协定在定义方面 equals
。
例如,假设一个添加两个元素,这样(a.equals(b) && c.compare(a, b) != 0)
一个元素与比较器c
一起为空TreeSet
。b
a
第二 add
个操作将返回 true(树集的大小将增加),因为 a
与 b
树集的角度不同,这与方法的 Set#add Set.add
规范相反。
注意:比较器通常也是java.io.Serializable
实现的好主意,因为它们可用作可序列化数据结构(如,)TreeSet
TreeMap
中的排序方法。 为了使数据结构成功序列化,比较器(如果提供)必须实现 Serializable
。
对于数学倾向,定义给定比较器c
对给定对象S
集施加的强制排序的关系为:
{(x, y) such that c.compare(x, y) <= 0}.
此总订单的商为:
{(x, y) such that c.compare(x, y) == 0}.
它紧随其后的是合同compare
,该商是一个等价关系S
,强加的排序是一个总顺序S
。 当我们说,施加S
的c
排序与相等时,是指排序的商是对象Object#equals(Object) equals(Object)
方法定义的等价关系:
{(x, y) such that x.equals(y)}.
换句话说,当强制排序与相等时,由方法的 equals
等价关系定义的等价类和方法商 compare
定义的等价类是相同的。
与不同 Comparable
,比较器可以选择允许比较 null 参数,同时保持等效关系的要求。
此接口是 Java 集合框架的成员。
已在 1.2 中添加。
适用于 . 的 java.util.Comparator
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
属性
Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
JniIdentityHashCode |
返回包装实例的值 |
JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
PeerReference |
返回 JniObjectReference 包装的 Java 对象实例。 (继承自 IJavaPeerable) |
方法
Compare(Object, Object) |
比较其两个订单参数。 |
Comparing(IFunction) |
接受从类型 |
Comparing(IFunction, IComparator) |
接受从类型 |
ComparingDouble(IToDoubleFunction) |
接受从类型 |
ComparingInt(IToIntFunction) |
接受从类型 |
ComparingLong(IToLongFunction) |
接受从类型 |
Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
Equals(Object) |
指示其他对象是否为 ”等于”此比较器。 |
Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
NaturalOrder() |
返回一个比较器,该比较器按自然顺序比较 |
NullsFirst(IComparator) |
返回一个 null 友好比较器,该比较器认为 |
NullsLast(IComparator) |
返回一个 null 友好比较器,该比较器认为 |
Reversed() |
返回一个比较器,该比较器施加此比较器的反向排序。 |
ReverseOrder() |
返回一个比较器,该比较器施加 em>自然排序</em> 的<反向。 |
SetJniIdentityHashCode(Int32) |
设置由 |
SetJniManagedPeerState(JniManagedPeerStates) |
比较函数,该函数对某些对象集合施加 总排序 。 (继承自 IJavaPeerable) |
SetPeerReference(JniObjectReference) |
设置由 |
ThenComparing(IComparator) |
返回字典顺序比较器与另一个比较器。 |
ThenComparing(IFunction) |
返回字典顺序比较器与提取排序键的 |
ThenComparing(IFunction, IComparator) |
返回一个字典顺序比较器,该比较器包含一个函数,该函数提取要与给定 |
ThenComparingDouble(IToDoubleFunction) |
返回字典顺序比较器与提取排序键的 |
ThenComparingInt(IToIntFunction) |
返回字典顺序比较器与提取排序键的 |
ThenComparingLong(IToLongFunction) |
返回字典顺序比较器与提取排序键的 |
UnregisterFromRuntime() |
取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
比较函数,该函数对某些对象集合施加 总排序 。 |
GetJniTypeName(IJavaPeerable) |
比较函数,该函数对某些对象集合施加 总排序 。 |