貓頭鷹的深夜翻譯:Java WeakHashMap

本文簡介

  1. WeakHashMap類概覽
  2. WeakHashMap類構造器總結
  3. WeakHashMap類構造方法
  4. 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類的方法

clipboard.png

  • 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 ]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章