黑马程序员技术交流社区

标题: 请问下WeakHashMap和WeakHashMap的特点 [打印本页]

作者: Fangjie    时间: 2016-6-13 19:27
标题: 请问下WeakHashMap和WeakHashMap的特点
我知道hashMap是存储无序键值对,TreeSet是存储自定义排序键值对,LinkeHashMao是存储put方法原顺序的键值对,请问下WeakHashMap和WeakHashMap的特点和作用是什么?

作者: TCK8888    时间: 2016-6-13 20:26
WeakHashMap与HashMap用法差不多,只是HashMap的key保留了对实际对象的强引用,只要该HashMap的对象不被销毁,该HashMap的所有key所引用的对象就不会被垃圾会收掉,HashMap也不会删掉这些key对应的key-value值;WeakHashMap保留对实际对象的弱引用,功能相反
写个测试代码,你自己分析下
  1. import java.util.WeakHashMap;

  2. /**
  3. * 测试WeakHashMap的原理
  4. * @author Administrator
  5. *
  6. */
  7. public class WeakHashMapTest {

  8.         public static void main(String[] args) {
  9.                
  10.                 WeakHashMap<String,String> whm = new WeakHashMap<String,String>();
  11.                 //3个key都是匿名字符串对象
  12.                 whm.put(new String("梨子"), new String("1箱"));
  13.                 whm.put(new String("苹果"), new String("2箱"));
  14.                 whm.put(new String("橘子"), new String("3箱"));
  15.                 //该key是一个系统缓存的字符串对象
  16.                 whm.put("香蕉", new String("4箱"));
  17.                 //输出key对象,会输出4个-----{橘子=3箱, 苹果=2箱, 香蕉=4箱, 梨子=1箱}
  18.                 System.out.println(whm);
  19.                 //垃圾回收
  20.                 System.gc();
  21.                 //运行处于挂起终止状态的所有对象的终止方法
  22.                 System.runFinalization();
  23.                 //输出key对象,会输出1个-----{香蕉=4箱}
  24.                 System.out.println(whm);
  25.         }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2