Java WeakHashMap示例
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} {}