語言

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 與 在 中 的布林值Se2e1e1.equals(e2)相同時,稱為與 相容

使用能對排序不一致的比較器來排序排序(或排序映射)時,應謹慎。 假設一個帶有明確比較器的 c 排序集合(或排序映射)與從集合 S中抽取的元素(或鍵)一起使用。 如果 在 cS 施加的排序與等值不一致,該排序集合(或排序映射)將表現得「奇怪」。 特別地,排序後的集合(或有序映射)會違反集合(或映射)的一般契約,該契約是以 定義 equals的。

例如,假設將兩個元素 a(a.equals(b) && c.compare(a, b) != 0)b 加到 一個具有比較器的cTreeSet 中 。 第二個 add 操作會返回為真(且樹集合大小會增加),因為 a 從樹集合的角度來看 和 b 並不等價,儘管這與方法的規範 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全序。 當我們說 對 cS 施加的排序與 相 等相容時,我們指的是該排序的商關係是由物件 Object#equals(Object) equals(Object) 方法所定義的等價關係:

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

換句話說,當所施加的排序與等價相容時,方法的等價關係 equals 所定義的等價類與方法的商 compare 等價類是相同的。

Comparable不同,比較器可選擇性地允許 null 參數比較,同時維持等價關係的要求。

此介面是 Java 集合框架的成員。

在 1.2 版本中加入。

Java 文件 java.util.Comparator

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

屬性

名稱 Description
Handle

取得底層 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

回傳包裹實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniObjectReferenceControlBlock

比較函數,對某些物件集合施加 總排序

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)

方法

名稱 Description
Compare(Object, Object)

比較了其兩種關於秩序的論點。

Comparing(IFunction, IComparator)

接受一個從類型 T中提取排序鍵的函式,並回傳 一個 Comparator<T> ,該函式會以該排序鍵使用指定的 Comparator

Comparing(IFunction)

接受一個從型別 T中提取java.lang.Comparable Comparable排序鍵的函式,並回傳 a Comparator<T> 並以該排序鍵進行比較。

ComparingDouble(IToDoubleFunction)

接受一個從型別 T中提取double排序鍵的函式,並回傳 a Comparator<T> 並以該排序鍵進行比較。

ComparingInt(IToIntFunction)

接受一個從類型 T中提取int排序鍵的函式,並回傳 a Comparator<T> 以該排序鍵進行比較。

ComparingLong(IToLongFunction)

接受一個從型別 T中提取long排序鍵的函式,並回傳 a Comparator<T> 並以該排序鍵進行比較。

Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
Equals(Object)

表示是否存在其他物體 ”等於”這個比較器。

Finalized()

當實例完成後才會被通知。

(繼承來源 IJavaPeerable)
NaturalOrder()

回傳一個比較器,能以自然順序比較 Comparable 物件。

NullsFirst(IComparator)

回傳一個對空友好的比較器,該比較器認為 null 小於非空。

NullsLast(IComparator)

回傳一個對空友好比較器,認為 null 大於非空。

Reversed()

回傳一個比較器,該比較器將此比較器的反序加諸。

ReverseOrder()

回傳一個比較器,該比較器將自然排序</em> 的反向><設定。

SetJniIdentityHashCode(Int32)

將回傳的值設為 JniIdentityHashCode

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

比較函數,對某些物件集合施加 總排序

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

將回傳的值設為 PeerReference

(繼承來源 IJavaPeerable)
ThenComparing(IComparator)

回傳一個字典序比較器與另一個比較器。

ThenComparing(IFunction, IComparator)

回傳一個字典序比較器,並帶有一個函數,能提取一個要與給定 Comparator比較的鍵。

ThenComparing(IFunction)

回傳一個字典序比較器,並有一個能擷取 Comparable 排序鍵的函數。

ThenComparingDouble(IToDoubleFunction)

回傳一個字典序比較器,並有一個能擷取 double 排序鍵的函數。

ThenComparingInt(IToIntFunction)

回傳一個字典序比較器,並有一個能提取 int 排序鍵的函數。

ThenComparingLong(IToLongFunction)

回傳一個字典序比較器,並有一個能擷取 long 排序鍵的函數。

UnregisterFromRuntime()

取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。

(繼承來源 IJavaPeerable)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

比較函數,對某些物件集合施加 總排序

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於