双向映射同步

问题描述:

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

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

所以,如果我要添加/接入/删除键/值对上述变量之一,我需要在两个同步(线程同步)。好像我没有获得任何东西,如果我需要这样做,使用2个地图来实现这个功能。

感谢您在查看此问题的时间。

通过同步,你是指从不同的线程访问两个,或者你是否认为如果你添加一个键/值对逆映射,你需要将它添加到前向映射?如果是后者,则不必这样做。反向映射是前向映射的视图,所以更改一个总是会影响另一个。

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