Language

IComparable インターフェイス

定義

このインターフェイスは、それを実装する各クラスのオブジェクトに対して合計順序を設定します。

[Android.Runtime.Register("java/lang/Comparable", "", "Java.Lang.IComparableInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public interface IComparable : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/lang/Comparable", "", "Java.Lang.IComparableInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type IComparable = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
実装

注釈

このインターフェイスは、それを実装する各クラスのオブジェクトに対して合計順序を設定します。 この順序はクラスの 自然な順序付けと呼ばれ、クラスの compareTo メソッドは 自然な比較メソッドと呼ばれます。

このインターフェイスを実装するオブジェクトのリスト (および配列) は、 Collections#sort(List) Collections.sort (および Arrays#sort(Object[]) Arrays.sort) で自動的に並べ替えることができます。 このインターフェイスを実装するオブジェクトは、比較比較子を指定しなくても、SortedMap の並べ替えられたマップのキーとして、または SortedSet の並べ替えられたセット内の要素として使用できます。

クラス Cの自然な順序は、がクラス e1.compareTo(e2) == 0のすべてのe1.equals(e2)およびe1に対してe2と同じブール値を持つ場合にのみCなされます。 nullはどのクラスのインスタンスでもありません。e.compareTo(null)がNullPointerExceptionを返しても、e.equals(null)はfalseをスローする必要があることに注意してください。

自然な順序が等しいと一致することを強くお勧めします (必須ではありません)。 これは、明示的な比較子を持たない並べ替えられたセット (および並べ替えられたマップ) が、自然な順序が等しい要素 (またはキー) で使用されている場合に "奇妙に" 動作するためです。 特に、このような並べ替えられたセット (または並べ替えられたマップ) は、 equals メソッドの観点から定義される set (または map) の一般的なコントラクトに違反します。

たとえば、明示的な比較子を使用しない並べ替えられたセットにaするように 2 つのキーbと(!a.equals(b) && a.compareTo(b) == 0)を追加した場合、addとaは並べ替えられたセットの観点から等価であるため、2 番目のb操作は false を返します (また、並べ替えられたセットのサイズは増加しません)。

Comparableを実装するほぼすべてのJavaコア クラスには、等しい順序と一致する自然な順序があります。 1 つの例外は java.math.BigDecimalです。java.math.BigDecimal#compareTo の自然な順序は、等しい数値と異なる表現 (4.0 や 4.00 など) を持つ BigDecimal オブジェクトに相当します。 java.math.BigDecimal#equals BigDecimal.equals()が true を返すには、2 つのBigDecimal オブジェクトの表現と数値が同じである必要があります。

数学的に傾斜した場合、指定されたクラス C の自然な順序を定義する 関係 は次のとおりです。

{@code
                  {(x, y) such that x.compareTo(y) <= 0}.
            }

この合計注文の 商 は次のとおりです。

{@code
                  {(x, y) such that x.compareTo(y) == 0}.
            }

これは、商がcompareToの等価関係であり、自然順序がCの合計順序であることをCの契約から直ちに従います。 クラスの自然順序が 等しいと言う場合、自然順序の商はクラスの Object#equals(Object) equals(Object) メソッドによって定義された等価関係であることを意味します。

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

つまり、クラスの自然な順序が等しい場合、 equals メソッドの等価関係によって定義される等価クラスと、 compareTo メソッドの商によって定義された等価クラスは同じです。

このインターフェイスは、Java コレクション フレームワークのメンバーです。

1.2 で追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

プロパティ

名前 説明
Handle

基になる Android オブジェクトの JNI 値を取得します。

(継承元 IJavaObject)
JniIdentityHashCode

ラップされたインスタンスの java.lang.System.identityHashCode() の値を返します。

(継承元 IJavaPeerable)
JniManagedPeerState

マネージド ピアの状態。

(継承元 IJavaPeerable)
JniObjectReferenceControlBlock

このインターフェイスは、それを実装する各クラスのオブジェクトに対して合計順序を設定します。

(継承元 IJavaPeerable)
JniPeerMembers

メンバー アクセスと呼び出しのサポート。

(継承元 IJavaPeerable)
PeerReference

ラップされたJava オブジェクト インスタンスのJniObjectReferenceを返します。

(継承元 IJavaPeerable)

メソッド

名前 説明
CompareTo(Object)

このオブジェクトを指定したオブジェクトと順序を比較します。

Disposed()

インスタンスが破棄されたときに呼び出されます。

(継承元 IJavaPeerable)
DisposeUnlessReferenced()

このインスタンスへの未処理の参照がない場合は、 Dispose()を呼び出します。それ以外の場合は何も実行しません。

(継承元 IJavaPeerable)
Finalized()

インスタンスが終了したときに呼び出されます。

(継承元 IJavaPeerable)
SetJniIdentityHashCode(Int32)

JniIdentityHashCodeによって返される値を設定します。

(継承元 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

このインターフェイスは、それを実装する各クラスのオブジェクトに対して合計順序を設定します。

(継承元 IJavaPeerable)
SetPeerReference(JniObjectReference)

PeerReferenceによって返される値を設定します。

(継承元 IJavaPeerable)
UnregisterFromRuntime()

ランタイムが将来の Java.Interop.JniRuntime+JniValueManager.PeekValue 呼び出しから返されないように、このインスタンスの登録を解除します。

(継承元 IJavaPeerable)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

このインターフェイスは、それを実装する各クラスのオブジェクトに対して合計順序を設定します。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象