亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

图片| 赤城县| 屏东市| 金秀| 通江县| 石景山区| 长寿区| 彝良县| 博乐市| 任丘市| 辽宁省| 乐亭县| 澄江县| 垦利县| 原平市| 潮安县| 桦南县| 遵义县| 阿城市| 黄陵县| 依安县| 新蔡县| 潼关县| 潍坊市| 长兴县| 三河市| 贵州省| 城口县| 江北区| 九江市| 额济纳旗| 罗源县| 大关县| 库车县| 东乌珠穆沁旗| 芦溪县| 泸西县| 肥乡县| 琼海市| 焉耆| 望奎县|