您的位置:首页 > 编程语言 > Java开发

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

2017-07-27 12:48 543 查看
一丶引用分类(面试)

强引用: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐