WeakHashMap Kelas
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.
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(IDictionary) |
Membuat baru |
| WeakHashMap(Int32, Single) |
Membangun baru, kosong |
| WeakHashMap(Int32) |
Membangun baru, kosong |
| WeakHashMap(IntPtr, JniHandleOwnership) |
Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime. |
Properti
| Nama | Deskripsi |
|---|---|
| Class |
Mengembalikan kelas runtime dari . |
| 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 |
| JniPeerMembers |
Implementasi berbasis tabel hash antarmuka |
| 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 |
| 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 |
| EntrySet() |
Mengembalikan |
| Equals(Object) |
Implementasi berbasis tabel hash antarmuka |
| Equals(Object) |
Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini. (Diperoleh dari Object) |
| ForEach(IBiConsumer) |
Implementasi berbasis tabel hash antarmuka |
| 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 |
| 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 |
| SetHandle(IntPtr, JniHandleOwnership) |
Mengatur properti Handle. (Diperoleh dari Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Implementasi berbasis tabel hash antarmuka |
| 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 |
| IJavaPeerable.Finalized() |
Implementasi berbasis tabel hash antarmuka |
| IJavaPeerable.JniObjectReferenceControlBlock |
Implementasi berbasis tabel hash antarmuka |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Implementasi berbasis tabel hash antarmuka |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Implementasi berbasis tabel hash antarmuka |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Implementasi berbasis tabel hash antarmuka |
| IJavaPeerable.UnregisterFromRuntime() |
Implementasi berbasis tabel hash antarmuka |
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) |
Implementasi berbasis tabel hash antarmuka |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Cobalah untuk memaksa |