IComparable Antarmuka
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Antarmuka ini memberlakukan pemesanan total pada objek dari setiap kelas yang mengimplementasikannya.
[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
- Turunan
- Atribut
- Penerapan
Keterangan
Antarmuka ini memberlakukan pemesanan total pada objek dari setiap kelas yang mengimplementasikannya. Pemesanan ini disebut sebagai urutan alami kelas, dan metode kelas compareTo disebut sebagai metode perbandingan alami.
Daftar (dan array) objek yang mengimplementasikan antarmuka ini dapat diurutkan secara otomatis menurut Collections#sort(List) Collections.sort (dan Arrays#sort(Object[]) Arrays.sort). Objek yang mengimplementasikan antarmuka ini dapat digunakan sebagai kunci dalam peta yang diurutkan SortedMap atau sebagai elemen dalam set sortir SortedSet, tanpa perlu menentukan komparator Komparator.
Urutan alami untuk kelas C dikatakan konsisten dengan sama jika dan hanya jika e1.compareTo(e2) == 0 memiliki nilai boolean yang sama seperti e1.equals(e2) untuk setiap e1 dan e2 dari kelas C. Perhatikan bahwa null bukan instans kelas apa pun, dan e.compareTo(null) harus melempar NullPointerException meskipun e.equals(null) mengembalikan false.
Sangat disarankan (meskipun tidak diperlukan) bahwa urutan alami konsisten dengan yang sama. Ini karena set yang diurutkan (dan peta yang diurutkan) tanpa komparat eksplisit berperilaku "aneh" ketika digunakan dengan elemen (atau kunci) yang pengurutan alaminya tidak konsisten dengan yang sama. Secara khusus, set yang diurutkan seperti itu (atau peta yang diurutkan) melanggar kontrak umum untuk ditetapkan (atau peta), yang didefinisikan dalam hal equals metode.
Misalnya, jika seseorang menambahkan dua kunci a dan b sedih sehingga (!a.equals(b) && a.compareTo(b) == 0) ke set yang diurutkan yang tidak menggunakan komparator eksplisit, operasi kedua add mengembalikan false (dan ukuran set yang diurutkan tidak meningkat) karena a dan b setara dari perspektif set yang diurutkan.
Hampir semua Java kelas inti yang menerapkan Comparable memiliki urutan alami yang konsisten dengan yang sama. Salah satu pengecualiannya adalah java.math.BigDecimal, yang java.math.BigDecimal#compareTo pengurutan alami menyamakan BigDecimal objek dengan nilai numerik yang sama dan representasi yang berbeda (seperti 4.0 dan 4.00). Untuk java.math.BigDecimal#equals BigDecimal.equals() mengembalikan true, representasi dan nilai numerik dari dua BigDecimal objek harus sama.
Untuk matematis yang cenderung, hubungan yang mendefinisikan pengurutan alami pada kelas C tertentu adalah:
{@code
{(x, y) such that x.compareTo(y) <= 0}.
}
Kuota untuk total pesanan ini adalah:
{@code
{(x, y) such that x.compareTo(y) == 0}.
}
Ini mengikuti segera dari kontrak untuk compareTo bahwa kuota adalah hubungan kesetaraan pada C, dan bahwa pemesanan alami adalah urutan total pada C. Ketika kita mengatakan bahwa urutan alami kelas konsisten dengan sama, kita berarti bahwa kuota untuk urutan alami adalah hubungan kesetaraan yang ditentukan oleh metode kelas Object#equals(Object) equals(Object) :
{(x, y) such that x.equals(y)}.
Dengan kata lain, ketika urutan alami kelas konsisten dengan yang sama, kelas kesetaraan yang ditentukan oleh hubungan equals kesetaraan metode dan kelas kesetaraan yang ditentukan oleh kuota compareTo metode sama.
Antarmuka ini adalah anggota Java Collections Framework.
Ditambahkan dalam 1.2.
Java dokumentasi untuk java.lang.Comparable.
Bagian dari halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Android Open Source Project dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Creative Commons 2.5 Lisensi Atribusi.
Properti
| Nama | Deskripsi |
|---|---|
| Handle |
Mendapatkan nilai JNI dari objek Android yang mendasar. (Diperoleh dari IJavaObject) |
| JniIdentityHashCode |
Mengembalikan nilai |
| JniManagedPeerState |
Status serekan terkelola. (Diperoleh dari IJavaPeerable) |
| JniPeerMembers |
Akses anggota dan dukungan pemanggilan. (Diperoleh dari IJavaPeerable) |
| PeerReference |
Mengembalikan instans objek Java yang dibungkusJniObjectReference. (Diperoleh dari IJavaPeerable) |
Metode
| Nama | Deskripsi |
|---|---|
| CompareTo(Object) |
Membandingkan objek ini dengan objek yang ditentukan untuk pesanan. |
| Disposed() |
Dipanggil ketika instans telah dibuang. (Diperoleh dari IJavaPeerable) |
| DisposeUnlessReferenced() |
Jika tidak ada referensi yang luar biasa untuk instans ini, maka panggilan |
| Finalized() |
Dipanggil ketika instans telah diselesaikan. (Diperoleh dari IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
Atur nilai yang dikembalikan oleh |
| SetJniManagedPeerState(JniManagedPeerStates) |
Antarmuka ini memberlakukan pemesanan total pada objek dari setiap kelas yang mengimplementasikannya. (Diperoleh dari IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
Atur nilai yang dikembalikan oleh |
| UnregisterFromRuntime() |
Batalkan pendaftaran instans ini sehingga runtime tidak akan mengembalikannya dari pemanggilan di masa mendatang Java.Interop.JniRuntime+JniValueManager.PeekValue . (Diperoleh dari IJavaPeerable) |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Mendapatkan nama JNI dari jenis instans |
| JavaAs<TResult>(IJavaPeerable) |
Cobalah untuk memaksa |
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Antarmuka ini memberlakukan pemesanan total pada objek dari setiap kelas yang mengimplementasikannya. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Cobalah untuk memaksa |