BidiMap同步

时间:2011-03-24 05:14:43

标签: java synchronization apache-commons bidirectional

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

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

因此,如果我要为上述变量之一添加/访问/删除键/值对,我需要同步两者(线程同步)。似乎我在使用2个地图实现此功能方面没有任何好处,如果我需要这样做的话。

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

1 个答案:

答案 0 :(得分:4)

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

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