📜  Java中的WeakHashMap类(1)

📅  最后修改于: 2023-12-03 15:16:30.788000             🧑  作者: Mango

Java中的WeakHashMap类

简介

WeakHashMap 是 Java 语言中的一个类,属于集合框架中的一员,可以存储键值对,其中键是弱类型的。它的作用是提供了一种快速访问和进行键值对映射的方式。和其他 Map 的实现类一样,WeakHashMap 实现了 Map 接口,并且允许存储多个键值对,但是它对于对键的对象的引用采用了一种弱引用的方式。

特性

WeakHashMap 有以下特性:

  • 允许将 key 设为弱类型的对象,当某个 key 不再被引用时,该 key 将会被删除,这样可以避免内存泄露。
  • 在 WeakHashMap 中,如果一个 key 的对象被垃圾回收掉了,那么这个 key 对应的 Entry 也会自动被移除。
  • 如果使用了 WeakHashMap,那么不要对已经存在的对象进行引用,否则会造成内存泄漏。
例子

下面是一个使用 WeakHashMap 的简单例子:

import java.util.WeakHashMap;

public class Sample {
    public static void main(String[] args) {
        WeakHashMap<String, String> map = new WeakHashMap<>();

        String key1 = "key1";
        String value1 = "value1";
        String key2 = "key2";
        String value2 = "value2";

        map.put(key1, value1);
        map.put(key2, value2);

        System.out.println(map.get("key1")); // 输出结果为 "value1"

        key1 = null;
        System.gc(); // 手动垃圾回收

        System.out.println(map.get("key1")); // 输出结果为 null
    }
}

上面的例子中,我们向一个 WeakHashMap 中添加了两个键值对,然后输出其中一个 key 对应的 value。接着我们手动将 key1 的引用设为 null,然后进行垃圾回收,再次输出 key1 对应的 value,此时输出为 null。

总结

WeakHashMap 是一个可以避免内存泄露的 Map 实现类,对于对键的对象的引用采用了一种弱引用的方式,当某个 key 不再被引用时,该 key 将会被删除。在使用 WeakHashMap 时,应当避免对已经存在的对象进行引用,否则会造成内存泄漏。