BidiMap 同步

Rob*_*win 3 java synchronization bidirectional apache-commons

使用apache commonds bidimap时,如何处理同步。例如,如果我创建如下所示的地图

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

因此,如果我要向上述变量之一添加/访问/删除键/值对,我需要同步两者(线程同步)。如果我需要这样做,似乎我不会通过使用 2 张地图实现此功能而获得任何好处。

感谢您花时间查看此问题。

Col*_*inD 5

通过同步,您是指从不同的线程访问这两个,还是您认为如果将键/值对添加到逆映射中,您还需要将其添加到前向映射中?如果是后者,则不必这样做。逆映射是正向映射的视图,因此更改一个总是会影响另一个。

如果您问的是线程同步……好吧,我不确定公共集合为此提供了什么。我的建议是使用Guava及其BiMap接口而不是 apache commons。除了使用泛型之外,Guava 还有一个Maps.synchronizedBiMap(BiMap)方法来创建一个同步包装器。