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 與 在 中 的布林值Se2e1e1.equals(e2)相同時,稱為與 相容。
使用能對排序不一致的比較器來排序排序(或排序映射)時,應謹慎。 假設一個帶有明確比較器的 c 排序集合(或排序映射)與從集合 S中抽取的元素(或鍵)一起使用。 如果 在 c 上 S 施加的排序與等值不一致,該排序集合(或排序映射)將表現得「奇怪」。 特別地,排序後的集合(或有序映射)會違反集合(或映射)的一般契約,該契約是以 定義 equals的。
例如,假設將兩個元素 a 和 (a.equals(b) && c.compare(a, b) != 0)b 加到 一個具有比較器的c空 TreeSet 中 。 第二個 add 操作會返回為真(且樹集合大小會增加),因為 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全序。 當我們說 對 cS 施加的排序與 相 等相容時,我們指的是該排序的商關係是由物件 Object#equals(Object) equals(Object) 方法所定義的等價關係:
{(x, y) such that x.equals(y)}.
換句話說,當所施加的排序與等價相容時,方法的等價關係 equals 所定義的等價類與方法的商 compare 等價類是相同的。
與 Comparable不同,比較器可選擇性地允許 null 參數比較,同時維持等價關係的要求。
此介面是 Java 集合框架的成員。
在 1.2 版本中加入。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
屬性
| 名稱 | Description |
|---|---|
| Handle |
取得底層 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
| JniIdentityHashCode |
回傳包裹實例的 |
| JniManagedPeerState |
管理貴族的狀況。 (繼承來源 IJavaPeerable) |
| JniObjectReferenceControlBlock |
比較函數,對某些物件集合施加 總排序 。 (繼承來源 IJavaPeerable) |
| JniPeerMembers |
成員存取與召喚支援。 (繼承來源 IJavaPeerable) |
| PeerReference |
回傳JniObjectReference包裹後的 Java 物件實例。 (繼承來源 IJavaPeerable) |
方法
| 名稱 | Description |
|---|---|
| Compare(Object, Object) |
比較了其兩種關於秩序的論點。 |
| Comparing(IFunction, IComparator) |
接受一個從類型 |
| Comparing(IFunction) |
接受一個從型別 |
| ComparingDouble(IToDoubleFunction) |
接受一個從型別 |
| ComparingInt(IToIntFunction) |
接受一個從類型 |
| ComparingLong(IToLongFunction) |
接受一個從型別 |
| Disposed() |
當實例被處理後才被召喚。 (繼承來源 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果沒有未解決的參考資料,則 |
| Equals(Object) |
表示是否存在其他物體 ”等於”這個比較器。 |
| Finalized() |
當實例完成後才會被通知。 (繼承來源 IJavaPeerable) |
| NaturalOrder() |
回傳一個比較器,能以自然順序比較 |
| NullsFirst(IComparator) |
回傳一個對空友好的比較器,該比較器認為 |
| NullsLast(IComparator) |
回傳一個對空友好比較器,認為 |
| Reversed() |
回傳一個比較器,該比較器將此比較器的反序加諸。 |
| ReverseOrder() |
回傳一個比較器,該比較器將自然排序</em> 的反向><設定。 |
| SetJniIdentityHashCode(Int32) |
將回傳的值設為 |
| SetJniManagedPeerState(JniManagedPeerStates) |
比較函數,對某些物件集合施加 總排序 。 (繼承來源 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
將回傳的值設為 |
| ThenComparing(IComparator) |
回傳一個字典序比較器與另一個比較器。 |
| ThenComparing(IFunction, IComparator) |
回傳一個字典序比較器,並帶有一個函數,能提取一個要與給定 |
| ThenComparing(IFunction) |
回傳一個字典序比較器,並有一個能擷取 |
| ThenComparingDouble(IToDoubleFunction) |
回傳一個字典序比較器,並有一個能擷取 |
| ThenComparingInt(IToIntFunction) |
回傳一個字典序比較器,並有一個能提取 |
| ThenComparingLong(IToLongFunction) |
回傳一個字典序比較器,並有一個能擷取 |
| UnregisterFromRuntime() |
取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。 (繼承來源 IJavaPeerable) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
比較函數,對某些物件集合施加 總排序 。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |