WeakHashMap和HashMap的区别
来源:互联网 发布:nextcloud config.php 编辑:程序博客网 时间:2024/06/05 14:38
WeakHashMap,此种Map的特点是,当除了自身有对key的引用外,此key没有其他引用那么此map会自动丢弃此值,见实例:此例子中声明了两个Map对象,一个是HashMap,一个是WeakHashMap,同时向两个map中放入a、b两个对象,当HashMap remove掉a 并且将a、b都指向null时,WeakHashMap中的a将自动被回收掉。出现这个状况的原因是,对于a对象而言,当HashMap remove掉并且将a指向null后,除了WeakHashMap中还保存a外已经没有指向a的指针了,所以WeakHashMap会自动舍弃掉a,而对于b对象虽然指向了null,但HashMap中还有指向b的指针,所以WeakHashMap将会保留
package test;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.WeakHashMap;public class Test {public static void main(String[] args) throws Exception {String a = new String("a");String b = new String("b");Map weakmap = new WeakHashMap();Map map = new HashMap();map.put(a, "aaa");map.put(b, "bbb");weakmap.put(a, "aaa");weakmap.put(b, "bbb");map.remove(a);a=null;b=null;System.gc();Iterator i = map.entrySet().iterator();while (i.hasNext()) {Map.Entry en = (Map.Entry)i.next();System.out.println("map:"+en.getKey()+":"+en.getValue());}Iterator j = weakmap.entrySet().iterator();while (j.hasNext()) {Map.Entry en = (Map.Entry)j.next();System.out.println("weakmap:"+en.getKey()+":"+en.getValue());}}}
0 0
- WeakHashMap和HashMap的区别
- WeakHashMap和HashMap的区别
- WeakHashMap和HashMap的区别
- WeakHashMap和HashMap的区别
- WeakHashMap和HashMap的区别
- WeakHashMap和HashMap的区别
- WeakHashMap和HashMap的区别
- WeakHashMap HashMap的区别
- hashmap,hashtable,TreeMap, WeakHashMap的区别和联系?
- 解析WeakHashMap与HashMap的区别详解
- HashMap、weakHashMap、LinkedHashMap和TreeMap四者区别与联系
- Java中HashTable、HashMap、WeakHashMap的区别及用法小结
- HashMap、HashTable、TreeMap和WeakHashMap
- HashMap,HashTable,TreeMap,WeakHashMap有哪些区别?
- Java中的HashMap、HashTable、TreeMap和WeakHashMap
- HashMap(5)--HashMap和Hashtable的区别
- HashMap VS WeakHashMap
- HashTable和HashMap的区别
- 【codevs 1082】线段树练习3
- 算法练习-背包问题
- Android面试准备 第三天 第六例 Android应用启动原理
- java18天
- ACM题集以及各种总结大全!
- WeakHashMap和HashMap的区别
- InSAR学习(四)高级的InSAR技术之基本原理
- for循环,while循环,do while循环
- 数据结构——堆栈和队列
- AWT基本组件(1)
- 房价之殇
- 关闭ECLIPSE的各种提示错误
- Lambda快速入门
- 【C++ Primer plus】【第十一章】使用类