根据 Java doc for weakhashmap:
“此类主要用于键对象,其 equals 方法使用 == 运算符测试对象身份。一旦丢弃此类键,它将永远无法重新创建,因此不可能在 WeakHashMap 中查找该键"
这是否意味着如果我们使用 objectA 作为 Weakhashmap 中条目 0 的键,然后我们删除该条目,testMapHashWeak.remove(objectA);
我们就不能objectA
对另一个条目使用相同的键?因为我做了一个小测试,我可以做到:
public void test4WeakHashMap(WeakHashMap<B, String> testMapHashWeak) {
B objectB = new B();
String sTest = "hola";
System.out.println("1st time - key&value inserted ->"+objectB+","+sTest);
testMapHashWeak.put(objectB, sTest);
System.out.println("Get element 1st time-> "+testMapHashWeak.get(objectB));
testMapHashWeak.remove(objectB);
//Insert 2nd time
System.out.println("2st time - key&value inserted ->"+objectB+","+sTest);
testMapHashWeak.put(objectB, sTest);
System.out.println("Get element 2nd time-> "+testMapHashWeak.get(objectB));
}
作为输出:
1st time - key&value inserted ->B@634e3372,hola
Get element 1st time-> hola
2st time - key&value inserted ->B@634e3372,hola
Get element 2nd time-> hola