本文簡介
-
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 ]