共用方式為


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上所加法的順序,在和 中具有與 每個 e1e2S和 相同的布爾值e1.equals(e2)c.compare(e1, e2)==0,才會與 相等一致。

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

例如,假設其中一個會加入兩個元素ab因此會使用比較子 c將 它(a.equals(b) && c.compare(a, b) != 0)新增至空TreeSet的 。 第二個 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。 當我們說所S強加的c排序與等號一致時,我們表示排序的商數是物件Object#equals(Object) equals(Object)方法所定義的等價關聯性:

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

換句話說,當強制排序與相等時,方法的等價關聯 equals 性所定義的等價類別和方法商 compare 所定義的等價類別相同。

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

這個介面是 Java Collections Framework 的成員

已在1.2中新增。

java.util.ComparatorJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

屬性

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

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

(繼承來源 IJavaPeerable)
JniManagedPeerState

受控對等的狀態。

(繼承來源 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)

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

適用於