WeakHashMap类

2022-09-04 12:28:13 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

一 代码示例

代码语言:javascript复制
import java.util.*;

public class WeakHashMapTest
{
	public static void main(String[] args)
	{
		WeakHashMap whm = new WeakHashMap();
		//HashMap whm = new HashMap();
		// 将WeakHashMap中添加三个key-value对,
		// 三个key都是匿名字符串对象(没有其他引用)
		whm.put(new String("英语") , new String("优秀"));
		whm.put(new String("数学") , new String("及格"));
		whm.put(new String("英文") , new String("中等"));
		//将 WeakHashMap中添加一个key-value对,
		// 该key是一个系统缓存的字符串对象。
		whm.put("java" , new String("中等"));    // ①
		// 输出whm对象,将看到4个key-value对。
		System.out.println(whm);
		// 通知系统立即进行垃圾回收
		System.gc();
		System.runFinalization();
		// 通常情况下,将只看到一个key-value对。
		System.out.println(whm);
	}
}

二 运行结果

{英文=中等, java=中等, 数学=及格, 英语=优秀}

{java=中等}

当whm用HashMap创建时,结果如下。

{java=中等, 英文=中等, 数学=及格, 英语=优秀}

{java=中等, 英文=中等, 数学=及格, 英语=优秀}

三 结果分析

如果WeakHashMap对象的key所引用的对象没有被其他强引用变量所引用,则这些key所引用的对象可能被垃圾回收,WeakHashMap也可能自动删除这些key所对应的key-value对象。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138260.html原文链接:https://javaforall.cn

0 人点赞