摘要:本文簡介類概覽類構造器總結類構造方法類使用舉例類概覽是一個實現(xiàn)了接口,并且鍵為型的哈希表。中的條目不再被正常使用時,會被自動刪除。它的鍵值均支持。和絕大多數(shù)的集合類一樣,這個類不是同步的。
本文簡介
WeakHashMap類概覽
WeakHashMap類構造器總結
WeakHashMap類構造方法
WeakHasjMap類使用舉例
1. WeakHashMap類概覽WeakHashMap是一個實現(xiàn)了Map接口,并且鍵為weak型的哈希表。WeakHashMap中的條目不再被正常使用時,會被自動刪除。它的鍵值均支持null。這個類類似于HashMap類,也具有初始容量和負載因子這樣的效率參數(shù)。和絕大多數(shù)的集合類一樣,這個類不是同步的。需要使用Collections.synchronizedMap方法來進行同步控制。弱引用--如果一個對象只有一個弱引用,那么垃圾回收期可以隨時收回該對象的內存。它不需要等到系統(tǒng)內存不足時才回收。通常,它的內存會在下一次垃圾收集器運行時釋放。
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
void forEach(BiConsumer super K,? super V> action): 對此映射中的每個條目執(zhí)行給定操作,直到處理完所有條目或操作引發(fā)異常。
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 Mapmap = 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 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 ]
想要了解更多開發(fā)技術,面試教程以及互聯(lián)網(wǎng)公司內推,歡迎關注我的微信公眾號!將會不定期的發(fā)放福利哦~
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/72620.html
摘要:什么是為執(zhí)行字節(jié)碼提供一個運行環(huán)境。它的實現(xiàn)主要包含三個部分,描述實現(xiàn)規(guī)格的文檔,具體實現(xiàn)和滿足要求的計算機程序以及實例具體執(zhí)行字節(jié)碼。該類先被轉化為一組字節(jié)碼并放入文件中。字節(jié)碼校驗器通過字節(jié)碼校驗器檢查格式并找出非法代碼。 什么是Java Development Kit (JDK)? JDK通常用來開發(fā)Java應用和插件。基本上可以認為是一個軟件開發(fā)環(huán)境。JDK包含Java Run...
摘要:否則它就會用新的值替代當前值。在這種情況下,鎖可能會優(yōu)于原子變量,但在實際的爭用級別中,原子變量的性能優(yōu)于鎖。在中引入了另外一個構件。 題目要求 在我們深入了解CAS(Compare And Swap)策略以及它是如何在AtomicInteger這樣的原子構造器中使用的,首先來看一下這段代碼: public class MyApp { private volatile int ...
摘要:在此基礎上又向前邁進了一步局部變量類型推斷允許開發(fā)人員跳過局部變量的類型聲明局部變量是指在方法定義,初始化塊,循環(huán)和其它的如代碼塊,會推斷該局部變量的類型。 前言 之前面試的時候問了我是否了解JDK10的變化,一時回答不出來,所以只回答了JDK8中的函數(shù)式編程和流編程。今天看到這篇講JAVA10的文章,順便了解一下。 正文 JAVA10的所有新特性請參考這里。在所有的JEP中,JEP-...
摘要:我們將使用單個線程管理任務放入隊列的操作以及從隊列中取出的操作。同時這個線程會持續(xù)的管理隊列。另一個線程將用來創(chuàng)建,它將一直運行知道服務器終止。此線程永遠不會過期,有助于實現(xiàn)持續(xù)監(jiān)控。這些請求將會自動的被獲取,并在線程中繼續(xù)處理。 在Java中,BlockingQueue接口位于java.util.concurrent包下。阻塞隊列主要用來線程安全的實現(xiàn)生產(chǎn)者-消費者模型。他們可以使用...
摘要:這個例子想要說明兩個事情中以為結尾的方法將會異步執(zhí)行默認情況下即指沒有傳入的情況下,異步執(zhí)行會使用實現(xiàn),該線程池使用一個后臺線程來執(zhí)行任務。這個例子展示了如何使用一個固定大小的線程池來實現(xiàn)大寫操作。 前言 這篇博客回顧JAVA8的CompletionStageAPI以及其在JAVA庫中的標準實現(xiàn)CompletableFuture。將會通過幾個例子來展示API的各種行為。 因為Compl...
閱讀 3863·2021-10-12 10:12
閱讀 1496·2021-10-11 10:58
閱讀 2329·2021-10-09 10:01
閱讀 2648·2021-09-24 09:48
閱讀 2733·2021-09-09 11:38
閱讀 3561·2019-08-30 15:44
閱讀 1770·2019-08-30 14:22
閱讀 546·2019-08-29 12:42