"التفكير في جافا" الطبعة الرابعة p519 صفحة الضعيف الفصل ملاحظات القراءة
يتم استخدام DephashMap لتوفير الضعف ، وهو هيكل يسمى جامع Yunxun Garbage يقومون بتنظيف المفاتيح والقيم تلقائيًا.
عند إضافة المفاتيح والقيم ، سوف يلفها التعيين تلقائيًا مع ضعف.
انظر رمز مصدر JDK ،
public v put (k key ، v value) {object k = masknull (key) ؛ int h = hash (k) ؛ entry <k ، v> oldvalue = e.value ؛ if (value! = oldvalue) يستخدم new Entry<>(k, value, queue, h, e) ReferenceQueue
/ ** * قائمة انتظار مرجعية للضعف المقبل */ private Final Referenceueue <bounter> Queue = New ReferenceQueue <> () ؛
انقر فوق مُنشئ new Entry ، أدخل المستوى الأعلى من Super To Ree.
/** * ينشئ مرجعًا ضعيفًا جديدًا يشير إلى الكائن المحدد ويتم تسجيله في قائمة الانتظار المحددة. * * كائن مرجع param سوف يشير المرجع الضعيف الجديد إلى * param q قائمة الانتظار التي سيتم بها تسجيل المرجع ، * أو <tt> null </tt> إذا لم يكن التسجيل مطلوبًا */ public deperference (t reference ، referenceque <؟ super t> q) }
هنا new Entry يبني أيضًا كائنًا ضعيفًا
امتحان:
package com.anialy.test.data_structure.map ؛ import java.util.iterator ؛ import java.util.weakhashmap ؛ public class preferHashMaptest {public static void main (string [] args) i = 0 ؛ wmap.keyset (). iterator () ؛ بينما (iter.hasnext ()) {system.out.println (wmap.get (iter.next ())) ؛}}}يمكن توقع أنه ، جزئياً ، نظرًا لأن السلسلة [] تحتفظ بالمراجع الضعيفة ، فإن المخرجات كلها فاصل 3.
ما ورد أعلاه هو كل محتوى هذه المقالة حول تحليل مثيل PremhashMap لبرمجة Java ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!