سؤال

لدينا خادم Scala يحصل على شجرة عقدة باستخدام مخازن المؤسسات البروتوكول فوق مقبس ونحتاج إلى إرفاق بيانات إضافية بكل عقدة.

في سياق واحد ملولب ، وعندما ستتم إزالة كل من شجرة العقدة والبيانات المرتبطة بها مراجعها القوية في نفس الوقت (بسبب الخروج من النطاق) ، هل هناك أي سبب لاستخدام صانع خريطة Google Guava مع الضعف () أكثر ؟ يبدو أنه مع صانع الخطر ، يدفع أحدهم للوصول المتزامن ، وهو أمر غير مطلوب في هذه الحالة.

جانبا ، سيكون من المفيد أن تتيح صانع الخريطة الوصول إلى إعدادات التكافؤ حتى يتمكن المرء من اختيار المساواة المرجعية ولكن لا يهتم بالمراجع الضعيفة أو الناعمة.

هل كانت مفيدة؟

المحلول

جانب سلبي مهم ل WeakHashMap هل أنها ليست "خريطة هوية". هذا هو ، يستخدم equals() و hashCode (عوضا عن == و identityHashCode) على المفاتيح ، والتي لا معنى لها حقًا للمفاتيح الضعيفة. يمكنك العمل حول هذا الخطأ من خلال التأكد من أن مفاتيحك تستخدم مساواة الهوية في equals طريقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top