📄 e357. automatically removing an unreferenced element from a hash table.txt
字号:
When a key is added to a map, the map will prevent the key from being garbage-collected. However, a weak map will automatically remove a key if the key is not being referenced by any other object. An example where this type of map might be useful is a registry where a registrant is automatically removed after it is garbage-collected.
// Create the weak map
Map weakMap = new WeakHashMap();
// Add a key to the weak map
weakMap.put(keyObject, valueObject);
// Get all keys that are still being referenced
Iterator it = weakMap.keySet().iterator();
while (it.hasNext()) {
// Get key
Object key = it.next();
}
The weak map does not automatically release the value if it is no longer used. To enable automatically release of the value, the value must be wrapped in a WeakReference object:
WeakReference weakValue = new WeakReference(valueObject);
weakMap.put(keyObject, weakValue);
// Get all keys that are still being referenced and check whether
// or not the value has been garbage-collected
it = weakMap.keySet().iterator();
while (it.hasNext()) {
// Get key
Object key = it.next();
weakValue = (WeakReference)weakMap.get(key);
if (weakValue == null) {
// Value has been garbage-collected
} else {
// Get value
valueObject = weakValue.get();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -