Muava Mapmaker (). الضعف (). makemap () مقابل الضعيف
-
25-09-2019 - |
سؤال
لدينا خادم Scala يحصل على شجرة عقدة باستخدام مخازن المؤسسات البروتوكول فوق مقبس ونحتاج إلى إرفاق بيانات إضافية بكل عقدة.
في سياق واحد ملولب ، وعندما ستتم إزالة كل من شجرة العقدة والبيانات المرتبطة بها مراجعها القوية في نفس الوقت (بسبب الخروج من النطاق) ، هل هناك أي سبب لاستخدام صانع خريطة Google Guava مع الضعف () أكثر ؟ يبدو أنه مع صانع الخطر ، يدفع أحدهم للوصول المتزامن ، وهو أمر غير مطلوب في هذه الحالة.
جانبا ، سيكون من المفيد أن تتيح صانع الخريطة الوصول إلى إعدادات التكافؤ حتى يتمكن المرء من اختيار المساواة المرجعية ولكن لا يهتم بالمراجع الضعيفة أو الناعمة.
المحلول
جانب سلبي مهم ل WeakHashMap
هل أنها ليست "خريطة هوية". هذا هو ، يستخدم equals()
و hashCode
(عوضا عن ==
و identityHashCode
) على المفاتيح ، والتي لا معنى لها حقًا للمفاتيح الضعيفة. يمكنك العمل حول هذا الخطأ من خلال التأكد من أن مفاتيحك تستخدم مساواة الهوية في equals
طريقة.