WeakHashMap其实和HashMap用法类似,他们之间的唯一的区别就是,HashMap中的key保存的是实际对象的强引用,因此只要对象不被销毁,即该key所对应的key-value都不会被垃圾回收机制回收,但是WeakHashMap是保存的实际对象的弱引用,这意味着只要该对象没有被强对象引用就有可能会被垃圾回收机制回收对应的Key-value
package collectionPackage;
import java.util.WeakHashMap;
/**
* WeakHashMap只是保留对象的弱引用
* @author Administrator
*
*/
public class WeakHashMapTest {
public static void main(String[] args) {
WeakHashMap whm= new WeakHashMap();
//三个key-value中的key 都是匿名对象,没有强引用指向该实际对象
whm.put(new String("语文"),new String("优秀"));
whm.put(new String("数学"), new String("及格"));
whm.put(new String("英语"), new String("中等"));
//增加一个字符串的强引用
whm.put("java", new String("特别优秀"));
System.out.println(whm);
//通知垃圾回收机制来进行回收
System.gc();
System.runFinalization();
//再次输出whm
System.out.println("第二次输出whm:"+whm);
}
}
运行结果如下:
{java=特别优秀, 数学=及格, 英语=中等, 语文=优秀}
第二次输出whm:{java=特别优秀}
再次说明WeakHashMap是保存的实际对象的弱引用,这意味着只要该对象没有被强对象引用就有可能会被垃圾回收机制回收对应的Key-value