HashSet<WeakReference<T>>
Set
はWeakHashMap<T>
に相当しますか?つまり、参照されなくなったときに自動的にとなりますが削除されますか?WeakHashMapに相当する値を設定しますか?
そうでない場合、それは何ですか?
HashSet<WeakReference<T>>
Set
はWeakHashMap<T>
に相当しますか?つまり、参照されなくなったときに自動的にとなりますが削除されますか?WeakHashMapに相当する値を設定しますか?
そうでない場合、それは何ですか?
セットにWeakReference
Sのいずれかによって参照されるオブジェクトは、ガベージコレクション取得する場合いいえ、WeakReference
はまだセットに含まれることになると自動的に削除されませんが、そのreferent
はnull
あろう。 WeakHashMap
は、弱参照キーをガベージコレクションされたマップから削除するために追加のコードを使用します。
WeakHashMap
のセットと等価である:
Set<T> set = Collections.newSetFromMap(new WeakHashMap<T, Boolean>());
HashSet
も内部HashMap
を使用しています。
BTW:WeakReference
は、参照がWeakReference
に保持されていてもガベージコレクションされる可能性のあるオブジェクトを指すオブジェクトです。 WeakReference
自体は、他のすべてのオブジェクトと同じように、もはやどこからでも強く参照されない限り、ガベージコレクションされません。
これは私が探していた答えです。ありがとうございました! –
これはあなたが探しているかもしれないと信じています:http://stackoverflow.com/a/4062950/717932 – dardo
[なぜWeakHashMapが存在しますが、WeakSetはありませんか?](http://stackoverflow.com/質問/ 4062919/why-does-exist-weakhashmap-but-absent-weakset) –
この質問は重複していません。もう一つの質問はWeakSetがない理由を答えることを試みます。これはSetの同等物を提供するものではなく、上記の例が同等かどうかを判断するものでもありません。 –