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上所加法的順序,在和 中具有與 每個 e1e2 S和 相同的布爾值e1.equals(e2)時c.compare(e1, e2)==0,才會與 相等一致。
使用能夠強加順序與等於排序集合(或排序地圖)不一致的比較子時,應謹慎行事。 假設具有明確比較子 c 的已排序集合(或已排序的對應)與從集合 S繪製的元素(或索引鍵)搭配使用。 如果 所S強加的c排序與相等不一致,則排序集(或排序的對應)的行為會「奇怪」。 特別是已排序的集合(或已排序的地圖)將違反 set (或 map) 的一般合約,其定義方式 equals為 。
例如,假設其中一個會加入兩個元素a,b因此會使用比較子 c將 它(a.equals(b) && c.compare(a, b) != 0)新增至空TreeSet的 。 第二個 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 Collections Framework 的成員。
已在1.2中新增。
此頁面的部分是根據 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) |
傳回可視為 |
| NullsLast(IComparator) |
傳回可視為 |
| 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) |
比較函式,會對 某些物件集合施加總順序 。 |