[java] لماذا توجد WeakHashMap ، ولكن غائبة WeakSet؟


1 Answers

Set<Object> weakHashSet = Collections.newSetFromMap(
        new WeakHashMap<Object, Boolean>());

كما رأينا في وثائق Collections.newSetFromMap ، تمرير WeakHashMap للحصول على Set .

Question

من J. بلوخ

مصدر ... من تسرب الذاكرة المستمعين ... أفضل طريقة للتأكد من أن الاستدعاءات هي جمع القمامة على الفور هو تخزين مراجع ضعيفة فقط ، على سبيل المثال ، عن طريق تخزينها فقط كمفاتيح في WeakHashMap .

لذا ، لماذا لا يوجد أي WeakSet في إطار عمل مجموعات جافا؟




بينما يمكنك بالفعل استخدام Collections.newSetFromMap() للحصول على WeakSet ، إلا أن حالات الاستخدام محدودة للغاية.

إذا كنت ترغب في تنفيذ شيء مثل String.intern() قد ترغب في إلقاء نظرة على وظيفة Interners.newWeakInterner() الجوافة بدلاً من ذلك.




Related