一個常見用途是用於 添加屬性的對象。有時你想添加一些 功能或數據的對象,但子類和/或組合 不是一種選擇在這種情況下,明顯的事情要做的是 創建一個鏈接你想擴展的對象的屬性 你想添加。那麼無論何時您需要該物業,您都可以在地圖上查看 。但是,如果要添加屬性 的對象往往被摧毀,並創造了很多,你可以用很多地圖 舊物佔用了大量的內存
如果使用WeakHashMap中,而不是結束物體將不再使用其他程序,即 所需的行爲,因此對象將盡快將其保留爲 。
WeakHashMap
的關鍵是弱引用。如果密鑰已被垃圾收集,則WeakHashMap
對象中的條目將被自動刪除。這在正常的HashMap
中不會發生。如果密鑰被垃圾收集,則條目不會被刪除。
在這個例子中,我採取了一個HashMap
和一個WeakHashMap
。我將把條目放入對象中,然後我們將把參考關鍵字設爲null
,然後進行垃圾收集。再次檢查輸入。在HashMap
對象條目將在那裏,但在WeakHashMap
對象不會有條目存在。
import java.util.HashMap;
import java.util.Map;
import java.util.WeakHashMap;
public class WeakHashMapTest {
public static void main(String[] args) {
Map hashMap= new HashMap();
Map weakHashMap = new WeakHashMap();
String keyHashMap = new String("keyHashMap");
String keyWeakHashMap = new String("keyWeakHashMap");
hashMap.put(keyHashMap, "Ankita");
weakHashMap.put(keyWeakHashMap, "Atul");
System.gc();
System.out.println("Before: hash map value:"+hashMap.get("keyHashMap")+" and weak hash map value:"+weakHashMap.get("keyWeakHashMap"));
keyHashMap = null;
keyWeakHashMap = null;
System.gc();
System.out.println("After: hash map value:"+hashMap.get("keyHashMap")+" and weak hash map value:"+weakHashMap.get("keyWeakHashMap"));
}
}
輸出將是:
Before: hash map value:Ankita and weak hash map value:Atul
After: hash map value:Ankita and weak hash map value:null
更多信息:
文檔(http://docs.oracle.com/javase/7/docs/api/java/util/WeakHashMap.html) –
它規定了什麼是HashMap的不是我的問題:( – Prateek
我沒」我試圖回答這個問題,我發佈的這一點更多的是讓我們休息*知道你指的是什麼 –