3

apache commonds bidimapを使用する場合、同期をどのように処理しますか。たとえば、次のようにマップを作成すると、

BidiMap oneWay = new DualHashBidiMap();
BidiMap theOtherWay = oneWay.inverseBidiMap();

したがって、上記の変数の1つにキーと値のペアを追加/アクセス/削除する場合は、両方を同期する必要があります(スレッド同期)。これを行う必要がある場合、2つのマップを使用してこの機能を実装しても何も得られないようです。

この問題をご覧いただきありがとうございます。

4

1 に答える 1

5

同期とは、異なるスレッドから2つにアクセスすることを指しているのですか、それともキーと値のペアを逆マップに追加する場合は、それを順マップにも追加する必要があると考えていますか?後者の場合は、それを行う必要はありません。インバースマップはフォワードマップのビューであるため、一方を変更すると、常にもう一方にも影響します。

スレッドの同期について質問している場合は...まあ、commonsコレクションがそれを提供するのかわかりません。私の推奨は、apachecommonsの代わりにGuavaとそのBiMapインターフェースを使用することです。ジェネリックスの使用に加えて、Guavaには同期ラッパーを作成するMaps.synchronizedBiMap(BiMap)メソッドがあります。

于 2011-03-24T06:09:44.243 に答える