fra*_*ish 6 java weak-references hashmap
我有一个HashMap<MyClass,ArrayList<WeakReference<MyObject>>>变量.
尽管从hashmap中清除了弱反射,但我还希望能够从HashMap中手动删除"MyObject".这是一个中心侦听器对象.
当我向arraylist添加项目链接到主hashmap键的值时,我使用 .add(new WeakReference<MyObject>(owner))
当我想从外部地方删除"自我"时,我发送"所有者"作为真实对象的参数.那么如何从我的hashmap中手动删除这个对象呢?我可以使用从传入所有者参数生成的新WeakReference进行查询吗?将旧的"new WeakReference<MyObject>(owner)"新的和"new WeakReference<MyObject>(owner)"相等?所以我可以从hashmap中删除它.
旧的"新WeakReference(所有者)"和新的"新WeakReference(所有者)"是否相等?
不,他们不会平等.两者都是不同的对象,并且equals在Weak Reference中不会覆盖方法.所以它默认检查两个引用是否相等而不是.
建议:
Map<MyClass,Map<String,WeakReference<MyObject>>>
Run Code Online (Sandbox Code Playgroud)
你可以改变list一个map并在对象中使用一些ID类的东西作为弱引用的关键.当所有者调用时,使用该对象的ID删除弱引用.
不,因为WeakReference它们的父Reference类都不会覆盖该equals()方法.所以它继承了equals()Object 的方法,它只考虑两个对象是否相同,如果它们是同一个对象的话.
| 归档时间: |
|
| 查看次数: |
2575 次 |
| 最近记录: |