gpt4 book ai didi

java - WeakHashMap 不会删除过时的条目

转载 作者:搜寻专家 更新时间:2023-11-01 01:23:13 28 4
gpt4 key购买 nike

如果没有对其中一个键的 Activity 引用,我如何模拟 WeakHashMap 中条目的删除。我有下一个代码:

WeakHashMap<Integer, String> weakMap = new WeakHashMap<Integer, String>();
Integer st1 = 5;
Integer st2 = 6;
String val = "BB";
weakMap.put(st1, "AA");
weakMap.put(st2, val);
st1 = 10;
//st1 = null;
//System.gc();
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}

输出总是

6  BB
5 AA

但我希望只得到 6 BB即使我取消注释行,它仍然会产生相同的输出。据我了解,如果 WeakHashMap 中的键在此 weakHashMap 之外的其他地方没有 Activity 引用,则必须删除具有指定键的条目。我对吗?如果否,请提出正确的解决方案。

最佳答案

您的 key 永远不会被垃圾回收,因为从 -128 到 127 的 Integer 被缓存(假设使用 Integer.valueOf,它用于自动装箱的 int )。您可以使用该范围之外的值或使用 Integer st1 = new Integer(5) 来确保您没有使用缓存的对象。

关于java - WeakHashMap 不会删除过时的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8873216/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com