Java WeakHashMap 类



简介

Java WeakHashMap 类是基于哈希表的 Map 实现,具有弱键。当 WeakHashMap 中的键不再使用时,垃圾收集器会自动删除该键对应的条目。以下是关于 WeakHashMap 的重要要点:

  • 支持 null 值和 null 键。

  • 与大多数集合类一样,此类也不是同步的。

  • 此类主要用于键对象,其 equals 方法使用 == 运算符测试对象标识。

  • WeakHashMap 中的每个键对象都作为弱引用的引用对象间接存储。

  • 此类是 Java 集合框架的成员。

类声明

以下是 java.util.WeakHashMap 类的声明:

public class WeakHashMap<K,V> 
   extends AbstractMap<K,V>
   implements Map<K,V>

这里 <K> 是此映射维护的键的类型,<V> 是映射值的类型。

类构造函数

序号 构造函数及描述
1

WeakHashMap()

此构造函数用于创建一个空的 WeakHashMap,具有默认初始容量 (16) 和加载因子 (0.75)。

2

WeakHashMap(int initialCapacity)

此构造函数用于创建一个空的 WeakHashMap,具有给定的初始容量和默认加载因子 (0.75)。

3

WeakHashMap(int initialCapacity, float loadFactor)

此构造函数用于创建一个空的 WeakHashMap,具有给定的初始容量和给定的加载因子。

4

WeakHashMap(Map<? extends K,? extends V> m)

此构造函数用于创建一个新的 WeakHashMap,其映射与指定的映射相同。

类方法

序号 方法及描述
1 void clear()

此方法删除此映射中的所有映射。

2 boolean containsKey(Object key)

如果此映射包含指定键的映射,则此方法返回 true。

3 boolean containsValue(Object value)

如果此映射将一个或多个键映射到指定值,则此方法返回 true。

4 Set<Map.Entry>K,V>> entrySet()

此方法返回此映射中包含的映射的 Set 视图。

5 v get(Object key)

此方法返回指定键映射到的值,如果此映射不包含键的映射,则返回 null。

6 boolean isEmpty()

如果此映射不包含键值映射,则此方法返回 true。

7 Set<K> keySet()

此方法返回此映射中包含的键的 Set 视图。

8 v put(K key, V value)

此方法将指定的值与此映射中的指定键关联。

9 void putAll(Map<? extends K,? extends V> m)

此方法将指定映射中的所有映射复制到此映射。

10 v remove(Object key)

如果存在,此方法从此弱哈希映射中删除键的映射。

11 int size()

此方法返回此映射中键值映射的数量。

12 Collection<V> values()

此方法返回此映射中包含的值的 Collection 视图。

继承的方法

此类继承自以下类:

  • java.util.AbstractMap
  • java.lang.Object
  • java.util.Map

向 Integer、Integer 对的 WeakHashMap 添加键值对示例

以下示例显示了 Java WeakHashMap put() 方法的使用,用于将一些值放入 Map 中。我们创建了一个 Integer、Integer 对的 Map 对象。然后使用 put() 方法添加了一些条目,然后打印映射。

package com.tutorialspoint;

import java.util.WeakHashMap;

public class WeakHashMapDemo {
   public static void main(String args[]) {
      
      // create hash map
      WeakHashMap<Integer,Integer> newmap = new WeakHashMap<>();

      // populate hash map
      newmap.put(1, 1);
      newmap.put(2, 2);
      newmap.put(3, 3); 

      System.out.println("Map elements: " + newmap);
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果。

Map elements: {3=3, 2=2, 1=1}
广告