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
加總的順序與相等不一致,則排序的集合 (或排序的對應) 的行為會「奇怪」。 特別是排序的集合 (或排序的對應) 將會違反 set (或 map) 的一般合約,其定義方式 equals
為 。
例如,假設其中一個會加入兩個元素a
,因此會(a.equals(b) && c.compare(a, b) != 0)
使用比較子 c
將 它新增至空TreeSet
b
的 。 第二 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
加總順序。 當我們說所c
S
加總的排序與相等一致時,表示排序的商數是物件Object#equals(Object) equals(Object)
方法所定義的等價關聯性, (s) :
{(x, y) such that x.equals(y)}.
換句話說,當加法順序與等號一致時,由方法的等價關聯 equals
所定義的等價類別和方法商 compare
所定義的等價類別相同。
不同於 Comparable
,比較子可以選擇性地允許比較 Null 自變數,同時維持等價關聯的需求。
這個介面是 Java Collections Framework 的成員。
已在1.2中新增。
此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
屬性
Handle |
取得基礎 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
JniIdentityHashCode |
傳回已包裝實例的 值 |
JniManagedPeerState |
Managed 對等的狀態。 (繼承來源 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 的 Null 易記比較子 |
NullsLast(IComparator) |
傳回考慮大於非 Null 的 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) |
比較函式,會對某些物件集合施加 總排序 。 |