java集合使用弱引用
时间: 2023-11-11 07:48:24 浏览: 34
Java集合框架中提供了一种弱引用的集合类:WeakHashMap。WeakHashMap是基于哈希表实现的,它使用弱引用来持有键。当某个键不再被其他对象引用时,该键会被垃圾回收器回收,并从WeakHashMap中自动移除。
使用弱引用的集合可以在某些情况下很有用,例如在缓存系统中,当缓存对象不再被其他对象引用时,可以通过使用WeakHashMap来自动清理缓存。
下面是使用WeakHashMap的示例代码:
```java
import java.util.Map;
import java.util.WeakHashMap;
public class WeakHashMapExample {
public static void main(String[] args) {
Map<Key, Value> weakMap = new WeakHashMap<>();
// 创建弱引用对象作为键
Key key1 = new Key(1);
Key key2 = new Key(2);
// 创建值对象
Value value1 = new Value("Value 1");
Value value2 = new Value("Value 2");
// 将键值对放入WeakHashMap中
weakMap.put(key1, value1);
weakMap.put(key2, value2);
// 输出WeakHashMap中的键值对数量
System.out.println("Size before GC: " + weakMap.size());
// 设置键对象为null,不再有其他引用指向它们
key1 = null;
key2 = null;
// 手动执行垃圾回收
System.gc();
// 输出WeakHashMap中的键值对数量
System.out.println("Size after GC: " + weakMap.size());
}
static class Key {
private int id;
public Key(int id) {
this.id = id;
}
}
static class Value {
private String data;
public Value(String data) {
this.data = data;
}
}
}
```
输出结果为:
```
Size before GC: 2
Size after GC: 0
```
可以看到,在手动执行垃圾回收后,WeakHashMap中的键值对被自动移除了。