WeakHashMap Kelas

Definisi

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

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

Keterangan

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>. Entri dalam WeakHashMap akan secara otomatis dihapus ketika kuncinya tidak lagi digunakan biasa. Lebih tepatnya, kehadiran pemetaan untuk kunci tertentu tidak akan mencegah kunci dibuang oleh pengumpul sampah, yaitu, dibuat dapat diselesaikan, diselesaikan, dan kemudian diklaim kembali. Ketika kunci telah dibuang entrinya dihapus secara efektif dari peta, sehingga kelas ini bersifat agak berbeda dari implementasi lain Map .

Nilai null dan kunci null didukung. Kelas ini memiliki karakteristik performa yang HashMap mirip dengan kelas , dan memiliki parameter efisiensi yang sama dari<> kapasitas< awal/em> dan <em>load factor</em>.

Seperti kebanyakan kelas koleksi, kelas ini tidak disinkronkan. WeakHashMap Sinkronisasi dapat dibangun menggunakan Collections#synchronizedMap Collections.synchronizedMap metode .

Kelas ini ditujukan terutama untuk digunakan dengan objek kunci yang metodenya equals menguji identitas objek menggunakan == operator. Setelah kunci seperti itu dibuang, kunci tersebut tidak pernah dapat dibuat ulang, jadi tidak mungkin untuk melakukan pencarian kunci tersebut di WeakHashMap lain waktu dan terkejut bahwa entrinya telah dihapus. Kelas ini akan bekerja dengan baik dengan objek kunci yang metodenya equals tidak didasarkan pada identitas objek, seperti String instans. Namun, dengan objek kunci yang dapat dibuat ulang seperti itu, penghapusan WeakHashMap entri otomatis yang kuncinya telah dibuang mungkin membingungkan.

Perilaku WeakHashMap kelas tergantung sebagian pada tindakan pengumpul sampah, sehingga beberapa invarian yang akrab (meskipun tidak diperlukan) Map tidak berlaku untuk kelas ini. Karena pengumpul sampah dapat membuang kunci kapan saja, WeakHashMap mungkin berperilaku seolah-olah utas yang tidak diketahui menghapus entri secara diam-diam. Secara khusus, bahkan jika Anda menyinkronkan pada WeakHashMap instans dan memanggil tidak ada metode mutatornya, dimungkinkan bagi metode untuk size mengembalikan nilai yang lebih kecil dari waktu ke waktu, agar isEmpty metode kembali false dan kemudian true, agar containsKey metode kembali true dan nanti false untuk kunci tertentu, agar get metode mengembalikan nilai untuk kunci tertentu tetapi kemudian mengembalikan null, put agar metode dikembalikan null dan remove metode untuk mengembalikan false kunci yang sebelumnya tampak berada di peta, dan untuk pemeriksaan berturut-turut dari set kunci, koleksi nilai, dan entri yang diatur untuk menghasilkan jumlah elemen yang berturut-turut lebih kecil.

Setiap objek kunci dalam WeakHashMap disimpan secara tidak langsung sebagai rujukan referensi yang lemah. Oleh karena itu, kunci akan secara otomatis dihapus hanya setelah referensi yang lemah untuk itu, baik di dalam maupun di luar peta, telah dibersihkan oleh pengumpul sampah.

<Catatan Implementasi yang kuat>:/kuat< Objek nilai dalam > dipegang olehWeakHashMap referensi kuat biasa. Dengan demikian, perawatan harus diambil untuk memastikan bahwa objek nilai tidak sangat merujuk ke kunci mereka sendiri, baik secara langsung atau tidak langsung, karena itu akan mencegah kunci dibuang. Perhatikan bahwa objek nilai dapat merujuk secara tidak langsung ke kuncinya melalui kunci itu WeakHashMap sendiri; yaitu, objek nilai mungkin sangat merujuk ke beberapa objek kunci lain yang objek nilai terkaitnya, pada gilirannya, sangat mengacu pada kunci objek nilai pertama. Jika nilai dalam peta tidak mengandalkan peta yang menyimpan referensi yang kuat padanya, salah satu cara untuk menanganinya adalah dengan membungkus nilai itu sendiri sebelum WeakReferences menyisipkan, seperti dalam: m.put(key, new WeakReference(value)), dan kemudian membuka bungkus pada masing-masing get.

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: perilaku iterator yang gagal cepat harus digunakan hanya untuk mendeteksi bug.

Kelas ini adalah anggota Java Collections Framework.

Ditambahkan dalam 1.2.

Java dokumentasi untuk java.util.WeakHashMap.

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
WeakHashMap()

Membangun baru, kosong WeakHashMap dengan kapasitas awal default (16) dan faktor beban (0.

WeakHashMap(IDictionary)

Membuat baru WeakHashMap dengan pemetaan yang sama dengan peta yang ditentukan.

WeakHashMap(Int32, Single)

Membangun baru, kosong WeakHashMap dengan kapasitas awal yang diberikan dan faktor beban yang diberikan.

WeakHashMap(Int32)

Membangun baru, kosong WeakHashMap dengan kapasitas awal yang diberikan dan faktor beban default (0.

WeakHashMap(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

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(Diperoleh dari JavaObject)
JniPeerMembers

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

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()

Membuat dan mengembalikan salinan objek ini.

(Diperoleh dari Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(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()

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(Diperoleh dari JavaObject)
EntrySet()

Mengembalikan Set tampilan pemetaan yang terkandung dalam peta ini.

Equals(Object)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(Diperoleh dari JavaObject)
Equals(Object)

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

(Diperoleh dari Object)
ForEach(IBiConsumer)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

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)
NewWeakHashMap(Int32)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

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)

Untuk ditambahkan

(Diperoleh dari AbstractMap)
ReplaceAll(IBiFunction)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

SetHandle(IntPtr, JniHandleOwnership)

Mengatur properti Handle.

(Diperoleh dari Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(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()

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(Diperoleh dari JavaObject)
IJavaPeerable.Finalized()

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(Diperoleh dari JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(Diperoleh dari JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(Diperoleh dari JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(Diperoleh dari JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

(Diperoleh dari JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

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)

Implementasi berbasis tabel hash antarmuka Map , dengan <em>kunci< lemah / em>.

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

Berlaku untuk