Share via


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具有與 中每個 e1e2S相同的布爾值e1.equals(e2)時,才會與 相等一致

使用可強制排序不一致且等於排序排序集 (或排序對應) 的比較子時,應注意。 假設具有明確比較子 c 的排序集 (或已排序的對應) 會與從集合 S繪製 (或索引) 鍵的專案搭配使用。 如果 所cS加總的順序與相等不一致,則排序的集合 (或排序的對應) 的行為會「奇怪」。 特別是排序的集合 (或排序的對應) 將會違反 set (或 map) 的一般合約,其定義方式 equals為 。

例如,假設其中一個會加入兩個元素a,因此會(a.equals(b) && c.compare(a, b) != 0)使用比較子 c將 它新增至空TreeSetb的 。 第二 add 個作業會傳回 true (,而且樹狀結構集的大小會增加) ,因為 ab 不是從樹狀結構集的觀點來看相等,即使這與 方法的 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)方法所定義的等價關聯性, (s) :

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

換句話說,當加法順序與等號一致時,由方法的等價關聯 equals 所定義的等價類別和方法商 compare 所定義的等價類別相同。

不同於 Comparable,比較子可以選擇性地允許比較 Null 自變數,同時維持等價關聯的需求。

這個介面是 Java Collections Framework 的成員。

已在1.2中新增。

java.util.ComparatorJava 檔。

此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

屬性

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

傳回已包裝實例的 值 java.lang.System.identityHashCode()

(繼承來源 IJavaPeerable)
JniManagedPeerState

Managed 對等的狀態。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取和調用支援。

(繼承來源 IJavaPeerable)
PeerReference

JniObjectReference 回已包裝 Java 物件實例的 。

(繼承來源 IJavaPeerable)

方法

Compare(Object, Object)

比較其兩個自變數的順序。

Comparing(IFunction)

接受從 類型T擷取java.lang.Comparable Comparable排序索引鍵的函式,並傳回Comparator<T>依該排序索引鍵比較的 。

Comparing(IFunction, IComparator)

接受從 型T別擷取排序索引鍵的函式,並使用指定的Comparator傳回Comparator<T>與該排序索引鍵比較的 。

ComparingDouble(IToDoubleFunction)

接受從 類型T擷取double排序索引鍵的函式,並傳回Comparator<T>依該排序索引鍵比較的 。

ComparingInt(IToIntFunction)

接受從 類型T擷取int排序索引鍵的函式,並傳回Comparator<T>依該排序索引鍵比較的 。

ComparingLong(IToLongFunction)

接受從 類型T擷取long排序索引鍵的函式,並傳回Comparator<T>依該排序索引鍵比較的 。

Disposed()

處置實例時呼叫。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果這個實例沒有未完成的參考,則呼叫 Dispose(),否則不會執行任何動作。

(繼承來源 IJavaPeerable)
Equals(Object)

指出某些其他物件是否 &商;等於&商;這個比較子。

Finalized()

實例完成時呼叫。

(繼承來源 IJavaPeerable)
NaturalOrder()

傳回比較子,以自然順序比較 Comparable 物件。

NullsFirst(IComparator)

傳回考慮小於非 Null 的 Null 易記比較子 null

NullsLast(IComparator)

傳回考慮大於非 Null 的 Null 易記比較子 null

Reversed()

傳回比較子,這個比較子會強制執行這個比較子的反向順序。

ReverseOrder()

傳回比較子,這個比較子會強制執行em>自然順序</em>的<反轉。

SetJniIdentityHashCode(Int32)

設定所 JniIdentityHashCode傳回的值。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

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

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

設定所 PeerReference傳回的值。

(繼承來源 IJavaPeerable)
ThenComparing(IComparator)

傳回與另一個比較子的語彙順序比較子。

ThenComparing(IFunction)

傳回語彙順序比較子與擷取排序索引鍵的 Comparable 函式。

ThenComparing(IFunction, IComparator)

傳回語匯順序比較子與擷取要與指定 Comparator比較之索引鍵的函式。

ThenComparingDouble(IToDoubleFunction)

傳回語彙順序比較子與擷取排序索引鍵的 double 函式。

ThenComparingInt(IToIntFunction)

傳回語彙順序比較子與擷取排序索引鍵的 int 函式。

ThenComparingLong(IToLongFunction)

傳回語彙順序比較子與擷取排序索引鍵的 long 函式。

UnregisterFromRuntime()

取消註冊這個實例,讓運行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。

(繼承來源 IJavaPeerable)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

適用於