共计 1816 个字符,预计需要花费 5 分钟才能阅读完成。
本文简介
WeakHashMap 类概览
WeakHashMap 类构造器总结
WeakHashMap 类构造方法
WeakHasjMap 类使用举例
1. WeakHashMap 类概览
WeakHashMap 是一个实现了 Map 接口,并且键为 weak 型的哈希表。WeakHashMap 中的条目不再被正常使用时,会被自动删除。它的键值均支持 null。这个类类似于 HashMap 类,也具有初始容量和负载因子这样的效率参数。和绝大多数的集合类一样,这个类不是同步的。需要使用 Collections.synchronizedMap 方法来进行同步控制。弱引用 – 如果一个对象只有一个弱引用,那么垃圾回收期可以随时收回该对象的内存。它不需要等到系统内存不足时才回收。通常,它的内存会在下一次垃圾收集器运行时释放。
2. WeakHashMap 的构造器
WeakHashMap(): 构造一个新的,空的 WeakHashMap,初始容量为 16,负载因子为 0.75
WeakHashMap(int initialCapacity): 构造一个新的,空的 WeakHashMap, 初始容量为 initialCapacity,负载因子为 0.75
WeakHashMap(int initialCapacity, float loadFactor): 构造一个新的,空的 WeakHashMap, 初始容量为 initialCapacity,负载因子为 loadFactor
WeakHashMap(Map<? extends K, ? extends V> m): 利用已有的 map 构造 WeakHashMap
3. WeakHashMap 类的方法
void clear(): 删除所有的条目
boolean containsKey(Object key): 如果有该键,返回 true
boolean containsValue(Object value): 如果有一个或多个 value 值,返回 true
Set< Map.Entry<K,V>>entrySet(): 返回键值视图
void forEach(BiConsumer<? super K,? super V> action): 对此映射中的每个条目执行给定操作,直到处理完所有条目或操作引发异常。
V get(Object key): 返回指定键映射到的值,如果此映射不包含键的映射,则返回 null。
boolean isEmpty(): 如果此映射不包含键 – 值映射,则返回 true。
4. WeakHashMap 类使用示例
import java.util.Map;
import java.util.Map.Entry;
import java.util.WeakHashMap;
public class WeakHashMapExample {
public static void main(final String[] args) {
final Map<Key, Project> map = new WeakHashMap<>();
Key key1 = new Key(“ACTIVE”);
final Key key2 = new Key(“INACTIVE”);
map.put(key1, new Project(100, “Customer Management System”, “Customer Management System”));
map.put(key2, new Project(200, “Employee Management System”, “Employee Management System”));
key1 = null;
System.gc();
for (final Entry<Key, Project> entry : map.entrySet()) {
System.out.println(entry.getKey().getKey() + ” ” + entry.getValue());
}
}
}
class Key {
private String key;
public Key(final String key) {
super();
this.key = key;
}
public String getKey() {
return key;
}
public void setKey(final String key) {
this.key = key;
}
}
输出:
INACTIVE [project id : 200, project name : Employee Management System,
project desc : Employee Management System ]