"Thinking in Java" Edisi ke -4 P519 Halaman Lemah Lemah Catatan Bacaan Bab
Weakhashmap digunakan untuk menghemat refreferensi lemah, struktur yang disebut pengumpul sampah Yunxun secara otomatis membersihkan kunci dan nilai.
Saat menambahkan kunci dan nilai, pemetaan akan secara otomatis membungkusnya dengan refreferensi yang lemah.
Lihat Kode Sumber JDK,
public v put (K key, value v) {objek k = masknull (key); int h = hash (k); entri <k, v> [] tab = getTable (); int i = indexfor (h, tab.length); untuk (entri) (v> e = tab [i]; e! = null; e = e = eF (he {h = ... OldValue = E.Value; if (value! = OldValue) E.Value = nilai; return oldValue;}} modcount ++; entri <k, v> e = tab [i]; tab [i] = entri baru <> (k nilai, queue, h, e); if (if (++ ukuran> = threshold) ulang (kisi. new Entry<>(k, value, queue, h, e) menggunakan ReferenceQueue
/ ** * Antrian Referensi untuk Lemah Lemah yang Dibersihkan */ Private Final ReferenceQueUe <Object> Queue = ReferenceQueue baru <> ();
Klik konstruktor new Entry , masukkan tingkat atas Super untuk dilihat.
/** * Membuat referensi lemah baru yang mengacu pada objek yang diberikan dan * terdaftar dengan antrian yang diberikan. * * @param Obyek Referensi Referensi lemah baru akan merujuk ke * @param q Antrian yang dengannya referensi akan terdaftar, * atau <tt> null </tt> jika pendaftaran tidak diperlukan */ refreferensi lemah publik (referensi T, referensi <? Super t> q) {super (referensi, q); } Di sini new Entry juga membangun objek Lemah
tes:
package com.anialy.test.data_structure.map;import java.util.Iterator;import java.util.WeakHashMap;public class WeakHashMapTest {public static void main(String[] args) {WeakHashMap wmap = new WeakHashMap<String, Object>();final int SIZE = 10;String[] str = new String[SIZE];for (int i = 0; wmap.keyset (). iterator (); while (iter.hasnext ()) {system.out.println (wmap.get (iter.next ()));}}}}Dapat diharapkan bahwa, sebagian, karena String [] mempertahankan referensi yang lemah, output semuanya adalah interval 3.
Di atas adalah semua konten dari artikel ini tentang analisis instance lemah dari pemrograman Java, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!