3

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

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

因此,如果我要向上述变量之一添加/访问/删除键/值对,我需要同步两者(线程同步)。如果我需要这样做,似乎我没有获得任何通过 2 个地图实现此功能的东西。

感谢您花时间研究这个问题。

4

1 回答 1

5

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

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

于 2011-03-24T06:09:44.243 回答