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
上所加法的順序,在和 中具有與 每個 e1
e2
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) |
比較函式,會對 某些物件集合施加總順序 。 |