91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java編程WeakHashMap的示例分析

發布時間:2021-08-11 10:47:26 來源:億速云 閱讀:124 作者:小新 欄目:編程語言

這篇文章主要介紹Java編程WeakHashMap的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

簡述:

WeakHashMap 用來保存WeakReference,這一結構云遜垃圾回收器自動清理鍵和值

在添加鍵和值的操作時,映射會自動使用WeakReference包裝它們,

見jdk源代碼,

public V put(K key, V value) {
	Object k = maskNull(key);
	int h = hash(k);
	Entry<K,V>[] tab = getTable();
	int i = indexFor(h, tab.length);
	for (Entry<K,V> e = tab[i]; e != null; e = e.next) {
		if (h == e.hash && eq(k, e.get())) {
			V oldValue = e.value;
			if (value != oldValue) 
			        e.value = value;
			return oldValue;
		}
	}
	modCount++;
	Entry<K,V> e = tab[i];
	tab[i] = new Entry<>(k, value, queue, h, e);
	if (++size >= threshold) 
	    resize(tab.length * 2);
	return null;
}

其中new Entry<>(k, value, queue, h, e)一行使用了ReferenceQueue

/** 
 * Reference queue for cleared WeakEntries 
 */ 
private final ReferenceQueue<Object> queue = new ReferenceQueue<>();

點入new Entry的構造函數,進入super頂層可以看到,

/** 
 * Creates a new weak reference that refers to the given object and is 
 * registered with the given queue. 
 * 
 * @param referent object the new weak reference will refer to 
 * @param q the queue with which the reference is to be registered, 
 *     or <tt>null</tt> if registration is not required 
 */ 
public WeakReference(T referent, ReferenceQueue<? super T> q) { 
  super(referent, q); 
}

這里new Entry同時也構造出來了一個WeakRefence對象

測試:

package com.anialy.test.data_structure.map;
import java.util.Iterator;
import java.util.WeakHashMap;
public class WeakHashMapTest {
	public static void main(String[] args) {
		WeakHashMap wmap = new WeakHashMap<String, Object>();
		final int SIZE = 10;
		String[] str = new String[SIZE];
		for (int i=0; i<SIZE; i++){
			String key = Integer.toString(i);
			String value = Integer.toString(i);
			// 每隔3個保留一個引用 
			if(i % 3 == 0) 
			        str[i] = key;
			wmap.put(key, value);
		}
		System.gc();
		Iterator iter = wmap.keySet().iterator();
		while(iter.hasNext()){
			System.out.println(wmap.get(iter.next()));
		}
	}
}

可以預料到,部分由于String[] 保留了弱引用,所以輸出都是間隔3的

Java編程WeakHashMap的示例分析

以上是“Java編程WeakHashMap的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海宁市| 海淀区| 九江县| 兴隆县| 措美县| 青铜峡市| 桂阳县| 南雄市| 龙陵县| 定襄县| 萝北县| 秦皇岛市| 精河县| 陆河县| 永修县| 且末县| 织金县| 林口县| 宁蒗| 昌乐县| 汝阳县| 西吉县| 芜湖市| 宜川县| 迁西县| 孟州市| 巴南区| 瓦房店市| 德格县| 武乡县| 赣榆县| 保靖县| 衡南县| 确山县| 通河县| 长岛县| 壶关县| 柞水县| 泸溪县| 溧水县| 伊通|