weakhashmapのJavaドキュメントによると:
「このクラスは主に、equals メソッドが == 演算子を使用してオブジェクトの同一性をテストするキー オブジェクトで使用することを目的としています。一度そのようなキーが破棄されると、二度と再作成できないため、WeakHashMap でそのキーのルックアップを行うことは不可能です。 "
これは、weakhashmap のエントリ 0 のキーとして objectA を使用し、後でそのエントリを削除すると、別のエントリ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