Java中Map的其他类型(WeakHashMap-IdentityHashMap-EnumMap)

一丶引用分类(面试


强引用:StongReference:引用指向对象,gc(Garbage collection)运行时不回收
软引用:SoftReference gc运行时可能回收(jvm内存不够)
弱引用:WealReference gc运行时立即回收
虚引用:PhantomReference 类似于无引用,主要跟踪对象被目收的状态,不能单独使用,必须与引用队列(ReferenceQueue) 联合使用


二、三个Map接口实现类

1.WeakHashMap:键为弱引用
2.ldentityHashMap:健比较地址去重,注意常量池的对象

3.EnumMap救举map,要 求键为枚举的值

package Others;

import java.util.WeakHashMap;

/***
 * WeakHashMap键为弱类型
 * gc运行立即被回收
 * 
 * @author zw
 *
 */
public class WeakHashMapDemo {
	public static void main(String[] args){
		WeakHashMap<String,String> whs = new WeakHashMap<String,String>();
		//常量池对象不会被回收
		whs.put("zzz", "zzz");
		whs.put("xxx", "xxx");
		//gc运行已被回收
		whs.put(new String("a"), "c");
		whs.put(new String("sssss"), "csdasd");
		System.gc();
		System.runFinalization();
		System.out.println(whs.size());
	}
}

package Others;

import java.util.IdentityHashMap;
/***
 * IdentityHashMap 键比较地址去重
 * @author zw
 *
 */
public class IdentityHashMapDemo {
	public static void main(String[] args){
		
		IdentityHashMap<String,String> it = new IdentityHashMap<String,String>();
		//常量池找那个的"a"
		it.put("a", "good");
		it.put("a","best");
		System.out.println(it.size());
	}
}


package Others;

import java.util.EnumMap;
/***
 * EnumMap
 * 要求键为枚举
 * @author zw
 *
 */
public class EnumMapDemo {

	public static void main(String[] args) {
		EnumMap<Season,String> map = new EnumMap<Season,String>(Season.class);
		map.put(Season.SPRING, "春困");
		map.put(Season.SUMMER, "夏无力");
		map.put(Season.AUTUMN, "秋乏");
		map.put(Season.WINTER, "冬眠");
		System.out.println(map.size());
	}

}

enum Season{
	SPRING,SUMMER,AUTUMN,WINTER;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值