A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我知道hashMap是存储无序键值对,TreeSet是存储自定义排序键值对,LinkeHashMao是存储put方法原顺序的键值对,请问下WeakHashMap和WeakHashMap的特点和作用是什么?

2 个回复

正序浏览
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.         }
复制代码

点评

谢谢大神解答!  发表于 2016-6-14 11:48
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马