2011-03-24 147 views
2

當使用apache commonds bidimap時,你如何處理同步。例如,如果我創建地圖如下圖所示雙向映射同步

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

所以,如果我要添加/接入/刪除鍵/值對上述變量之一,我需要在兩個同步(線程同步)。好像我沒有獲得任何東西,如果我需要這樣做,使用2個地圖來實現這個功能。

感謝您在查看此問題的時間。

回答

4

通過同步,你是指從不同的線程訪問兩個,或者你是否認爲如果你添加一個鍵/值對逆映射,你需要將它添加到前向映射?如果是後者,則不必這樣做。反向映射是前向映射的視圖,所以更改一個總是會影響另一個。

如果您在詢問線程同步......好吧,我不確定commons集合爲此提供了什麼。我的建議是使用Guava及其BiMap接口而不是apache commons。除了使用泛型外,Guava還有一個創建同步包裝的Maps.synchronizedBiMap(BiMap)方法。