Java WeakHashMap示例

时间:2020-02-23 14:37:17  来源:igfitidea点击:

Java中的WeakHashMap实现了Map接口,并表示了一个包含弱键的哈希表。如果某个键不是普通使用的,则映射中的条目将被自动删除。这就是它与其他Map实现的区别。

支持空值和非空值,在初始容量负载因子方面性能与HashMap类相似,*具有相同的效率。

默认情况下,此类不同步。

HashMap和WeakHashMap的主要区别:

HashMap具有强引用,而WeakHashMap具有弱引用。

HashMap在垃圾收集器上占主导地位。

WeakHashMap类中没有clone()方法,因为它只实现Map接口。

WeakHashMap实现Map并扩展AbstractMap。

WeakHashMap的施工人员

WeakHashMap():创建一个空的WeakHashMap,默认初始容量为16,负载系数为0.75.

WeakHashMap(int initialCapacity:创建具有指定容量的空WeakHashMap。

WeakHashMap(int initialCapacity,float loadFactor):创建具有指定容量和负载因子的空WeakHashMap。

WeakHashMap(地图<?扩展K?extends V>m):使用与指定映射相同的映射创建新的WeakHashMap。

WeakHashMap中的方法

void clear():从当前映射中删除所有映射。

boolean containsKey(Object key):如果当前映射包含指定键的映射,则返回true。

boolean containsValue(Object value):如果当前映射中有映射到指定值的键,则返回true。

V get(Object key):返回指定键映射到的值,如果映射不包含指定键的映射,则返回null。

boolean isEmpty():如果映射为空,则返回true,否则返回false。

V put(K键,V值):将指定值“放入”当前映射中的指定键。

V remove(Object key):从WeakHashMap中删除一个键的映射(如果存在)。

int size():返回映射中的映射数。

有关所有方法的文档,可以访问Oracle官方文档页。

执行上述方法的示例程序:

//importing the necessary library which is under java.util.*
import java.util.*; 

public class WeakHashMapExample 
{ 
  public static void main(String args[])throws Exception 
  { 
      //declaration of an instance of WeakHashMap that takes a number as a key and string as a value
      Map<Number, String> animals = new WeakHashMap<Number, String>(); 
      //populating the map
      animals.put(1, "Elephant"); 
      animals.put(2, "Tiger"); 
      animals.put(3, "Lion"); 

      //condition that checks for a certain value
      if(animals.containsValue("Tiger")) 
          System.out.println("Tiger exists."); 

      //condition that checks for a certain key
      if(animals.containsKey(3)) 
          System.out.println("'3' key exists."); 

      //removing a specific key
      animals.remove(1);

      System.out.println(animals);

      //deletes all mappings
      animals.clear(); 

      //check if weakhashmap is empty
      if(animals.isEmpty()) 
          System.out.println(animals); 
  }
}

输出

Tiger exists.
'3' key exists.
{3=Lion, 2=Tiger}
{}