IdentityHashMap Kelas

Definisi

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

[Android.Runtime.Register("java/util/IdentityHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class IdentityHashMap : Java.Util.AbstractMap, IDisposable, Java.IO.ISerializable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/util/IdentityHashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type IdentityHashMap = class
    inherit AbstractMap
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
    interface IMap
Warisan
Atribut
Penerapan

Keterangan

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai). Dengan kata lain, dalam IdentityHashMap, dua kunci k1 dan k2 dianggap sama jika dan hanya jika (k1==k2). (Dalam implementasi normal Map (seperti HashMap) dua kunci k1 dan k2 dianggap sama jika dan hanya jika (k1==null ? k2==null : k1.equals(k2)).)

<b>Kelas ini bukan implementasi tujuan Map umum! Meskipun kelas ini mengimplementasikan Map antarmuka, kelas ini sengaja melanggar Map's kontrak umum, yang mengamanatkan penggunaan equals metode saat membandingkan objek. Kelas ini dirancang untuk digunakan hanya dalam kasus langka di mana semantik kesetaraan referensi diperlukan.</b>

Koleksi tampilan peta ini juga memiliki semantik kesetaraan referensi untuk elemennya. keySet() keySetLihat metode , values() values, dan entrySet() entrySet untuk informasi lebih lanjut.

Penggunaan umum kelas ini adalah transformasi grafik objek yang mempertahankan topologi, seperti serialisasi atau penyalinan mendalam. Untuk melakukan transformasi seperti itu, program harus mempertahankan "tabel simpul" yang melacak semua referensi objek yang telah diproses. Tabel simpul tidak boleh sama dengan objek yang berbeda meskipun kebetulan sama. Penggunaan umum lain dari kelas ini adalah untuk mempertahankan objek proksi. Misalnya, fasilitas penelusuran kesalahan mungkin ingin mempertahankan objek proksi untuk setiap objek dalam program yang sedang di-debug.

Kelas ini menyediakan semua operasi peta opsional, dan mengizinkan null nilai dan null kunci. Kelas ini tidak menjamin urutan peta; secara khusus, tidak menjamin bahwa pesanan akan tetap konstan dari waktu ke waktu.

Kelas ini memberikan performa waktu konstan untuk operasi dasar (get dan put), dengan asumsi fungsi hash identitas sistem (System#identityHashCode(Object)) menyebarkan elemen dengan benar di antara wadah.

Kelas ini memiliki satu parameter penyetelan (yang memengaruhi performa tetapi bukan semantik): ukuran maksimum yang diharapkan. Parameter ini adalah jumlah maksimum pemetaan nilai kunci yang diperkirakan akan ditangguhkan oleh peta. Secara internal, parameter ini digunakan untuk menentukan jumlah wadah yang awalnya terdiri dari tabel hash. Hubungan yang tepat antara ukuran maksimum yang diharapkan dan jumlah wadah tidak ditentukan.

Jika ukuran peta (jumlah pemetaan nilai kunci) cukup melebihi ukuran maksimum yang diharapkan, jumlah wadah akan ditingkatkan. Meningkatkan jumlah wadah ("rehashing") mungkin cukup mahal, sehingga membayar untuk membuat peta hash identitas dengan ukuran maksimum yang diharapkan cukup besar. Di sisi lain, iterasi atas tampilan pengumpulan membutuhkan waktu yang sebanding dengan jumlah wadah dalam tabel hash, sehingga membayar untuk tidak mengatur ukuran maksimum yang diharapkan terlalu tinggi jika Anda terutama khawatir dengan performa perulangan atau penggunaan memori.

<kuat>Perhatikan bahwa implementasi ini tidak disinkronkan.</strong> Jika beberapa utas mengakses peta hash identitas secara bersamaan, dan setidaknya salah satu utas memodifikasi peta secara struktural, itu harus disinkronkan secara eksternal. (Modifikasi struktural adalah operasi apa pun yang menambahkan atau menghapus satu atau beberapa pemetaan; hanya mengubah nilai yang terkait dengan kunci yang sudah dikandung instans bukanlah modifikasi struktural.) Ini biasanya dicapai dengan menyinkronkan pada beberapa objek yang secara alami merangkum peta.

Jika tidak ada objek seperti itu, peta harus "dibungkus" menggunakan Collections#synchronizedMap Collections.synchronizedMap metode . Ini paling baik dilakukan pada waktu pembuatan, untuk mencegah akses tidak disengaja yang tidak disinkronkan ke peta:

Map m = Collections.synchronizedMap(new IdentityHashMap(...));

Iterator yang dikembalikan oleh iterator metode koleksi yang dikembalikan oleh semua "metode tampilan koleksi" kelas ini gagal cepat: jika peta dimodifikasi secara struktural kapan saja setelah iterator dibuat, dengan cara apa pun kecuali melalui metode iterator sendiri remove , iterator akan melemparkan ConcurrentModificationException. Dengan demikian, dalam menghadapi modifikasi bersamaan, iterator gagal dengan cepat dan bersih, daripada berisiko perilaku arbitrer dan non-deterministik pada waktu yang tidak ditentukan di masa depan.

Perhatikan bahwa perilaku fail-fast dari iterator tidak dapat dijamin apa adanya, umumnya, tidak mungkin untuk membuat jaminan keras dengan adanya modifikasi bersamaan yang tidak disinkronkan. Iterator fail-fast melempar ConcurrentModificationException berdasarkan upaya terbaik. Oleh karena itu, akan salah untuk menulis program yang bergantung pada pengecualian ini untuk kebenarannya: iterator fail-fast harus digunakan hanya untuk mendeteksi bug.

Kelas ini adalah anggota Java Collections Framework.

Ditambahkan dalam 1.4.

Java dokumentasi untuk java.util.IdentityHashMap.

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.

Konstruktor

Nama Deskripsi
IdentityHashMap()

Membuat peta hash identitas kosong baru dengan ukuran maksimum default yang diharapkan (21).

IdentityHashMap(IDictionary)

Membuat peta hash identitas baru yang berisi pemetaan nilai kunci dalam peta yang ditentukan.

IdentityHashMap(Int32)

Membuat peta baru yang kosong dengan ukuran maksimum yang diharapkan yang ditentukan.

IdentityHashMap(IntPtr, JniHandleOwnership)

Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime.

Properti

Nama Deskripsi
Class

Mengembalikan kelas runtime dari .Object

(Diperoleh dari Object)
Handle

Handel ke instans Android yang mendasar.

(Diperoleh dari Object)
IsEmpty

Untuk ditambahkan

(Diperoleh dari AbstractMap)
JniIdentityHashCode

Mendapatkan kode hash identitas yang ditetapkan ke Java peer ini oleh runtime interop.

(Diperoleh dari Object)
JniManagedPeerState

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
JniPeerMembers

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

PeerReference

Mendapatkan referensi objek JNI untuk peer Java ini.

(Diperoleh dari Object)
ThresholdClass

API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

ThresholdType

API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

Metode

Nama Deskripsi
Clear()

Untuk ditambahkan

(Diperoleh dari AbstractMap)
Clone()

Mengembalikan salinan dangkal peta hash identitas ini: kunci dan nilai itu sendiri tidak dikloning.

Construct(JniObjectReference, JniObjectReferenceOptions)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
ContainsKey(Object)

Untuk ditambahkan

(Diperoleh dari AbstractMap)
ContainsValue(Object)

Untuk ditambahkan

(Diperoleh dari AbstractMap)
Dispose()

Merilis sumber daya yang dipegang oleh rekan Java ini.

(Diperoleh dari Object)
Dispose(Boolean)

Merilis sumber daya yang dipegang oleh rekan Java ini.

(Diperoleh dari Object)
DisposeUnlessReferenced()

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
EntrySet()

Mengembalikan Set tampilan pemetaan yang terkandung dalam peta ini.

Equals(Object)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
Equals(Object)

Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini.

(Diperoleh dari Object)
ForEach(IBiConsumer)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

Get(Object)

Untuk ditambahkan

(Diperoleh dari AbstractMap)
GetHashCode()

Mengembalikan nilai kode hash untuk objek .

(Diperoleh dari Object)
JavaFinalize()

Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek.

(Diperoleh dari Object)
KeySet()

Untuk ditambahkan

(Diperoleh dari AbstractMap)
Notify()

Membangunkan satu utas yang menunggu monitor objek ini.

(Diperoleh dari Object)
NotifyAll()

Membangunkan semua utas yang menunggu monitor objek ini.

(Diperoleh dari Object)
Put(Object, Object)

Untuk ditambahkan

(Diperoleh dari AbstractMap)
PutAll(IDictionary)

Untuk ditambahkan

(Diperoleh dari AbstractMap)
Remove(Object, Object)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

Remove(Object)

Untuk ditambahkan

(Diperoleh dari AbstractMap)
Replace(Object, Object, Object)

Untuk ditambahkan

ReplaceAll(IBiFunction)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

SetHandle(IntPtr, JniHandleOwnership)

Mengatur properti Handle.

(Diperoleh dari Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
Size()

Untuk ditambahkan

(Diperoleh dari AbstractMap)
ToArray<T>()

Membuat array terkelola dari pembungkus array Java ini.

(Diperoleh dari Object)
ToString()

Mengembalikan representasi string objek.

(Diperoleh dari Object)
UnregisterFromRuntime()

Membatalkan pendaftaran peer Java ini dari runtime interop.

(Diperoleh dari Object)
Values()

Untuk ditambahkan

(Diperoleh dari AbstractMap)
Wait()

Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>.

(Diperoleh dari Object)
Wait(Int64, Int32)

Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu.

(Diperoleh dari Object)
Wait(Int64)

Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

Nama Deskripsi
IJavaPeerable.Disposed()

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
IJavaPeerable.Finalized()

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

(Diperoleh dari JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

Metode Ekstensi

Nama Deskripsi
GetJniTypeName(IJavaPeerable)

Mendapatkan nama JNI dari jenis instans self.

JavaAs<TResult>(IJavaPeerable)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

JavaCast<TResult>(IJavaObject)

Melakukan konversi jenis yang diperiksa runtime Android.

JavaCast<TResult>(IJavaObject)

Kelas ini mengimplementasikan Map antarmuka dengan tabel hash, menggunakan kesetaraan referensi sebagai pengganti kesetaraan objek saat membandingkan kunci (dan nilai).

TryJavaCast<TResult>(IJavaPeerable, TResult)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

Berlaku untuk