貓頭鷹的深夜翻譯:Java WeakHashMap

本文簡介

  1. WeakHashMap類概覽
  2. WeakHashMap類構造器總結
  3. WeakHashMap類構造方法
  4. WeakHasjMap類使用舉例

1. WeakHashMap類概覽

WeakHashMap是一個實現了Map接口,而且鍵爲weak型的哈希表。WeakHashMap中的條目再也不被正常使用時,會被自動刪除。它的鍵值均支持null。這個類相似於HashMap類,也具備初始容量和負載因子這樣的效率參數。和絕大多數的集合類同樣,這個類不是同步的。須要使用Collections.synchronizedMap方法來進行同步控制。弱引用--若是一個對象只有一個弱引用,那麼垃圾回收期能夠隨時收回該對象的內存。它不須要等到系統內存不足時纔回收。一般,它的內存會在下一次垃圾收集器運行時釋放。java

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 ]

clipboard.png
想要了解更多開發技術,面試教程以及互聯網公司內推,歡迎關注個人微信公衆號!將會不按期的發放福利哦~微信

相關文章
相關標籤/搜索