弱いキーを持つ単純なハッシュ マップが必要です。Java 自身はそれWeakHashMap
を私に与えてくれますが、ID セマンティクスではそうではありません (equals()
キーの比較に使用します)。
Google の Guava ライブラリは、ハッシュ マップ メソッドを刷新しました。最新バージョン (14.0) では、 a を使用する代わりにMapMaker
(ほとんどではないにしても多くのものが非推奨になっています)、CacheBuilder
あらゆる種類のオプションである a を使用する必要があるようです。いいですね、weakKeys()
オプションがあるので、それを使用します。しかし、結果として得られるキャッシュも同時実行されます (つまり、さまざまなマップを内部に保持し、独自の内部キー セットを使用して同時アクセスを規制します)、これをオフにすることはできません。ReadWriteLock
マップへのアクセスを制御するために既に独自のものを使用しているため、同時実行は必要ありません。
わかりました。同時実行を受け入れます。地図をくれ!私は試します:
Map<Foo, Bar> map = CacheBuilder.newBuilder().weakKeys().build();
待って、それは!Cache<Object, Object>
ではない を返します。Map<Foo, Bar>
Google Guava で単純な ID ベースの弱いキー付きマップを取得するにはどうすればよいですか?