我有以下BIMAP集合:如何正確地使用共享密鑰來關聯多個BiMap集合?
BiMap<String,String> accessIds = HashBiMap.create();
accessIds.put("FOO","accessId 1"); //This access Id is common to both FOO and BAR
BiMap<String,String> merchants = HashBiMap.create();
merchants.put("FOO", "merchant 1"); //Both FOO and BAR each have unique merchants
merchants.put("BAR", "merchant 2");
這些是4個總集合我現在有2。所有4個集合共享相同的密鑰,但具有不同的值。
我的問題是:如何確保我可以獲得merchant 2
當我有一個accessIds密鑰FOO
?
在有人指出這兩個集合實際上沒有共享相同的密鑰之前,請記住BiMap強制實施唯一值,因此我無法在集合中列出"BAR","accessId 1"
。
我不相信BiMap是正確的收藏,但我確實使用了它的inverse()
方法。如果有更適合的集合(或者我忽略的其他方法),請告訴我。
僅供參考:我使用Guava-14.0-rc1進行BiMap收集。
告訴我們您的使用案例,而不是非工作解決方案。如果幾個鍵在accessIds中可以具有相同的值,那麼顯然它不能是BiMap。如果他們共享相同的accessId,爲什麼FOO或BAR優先於另一個呢?爲什麼不使用真實的物體? – 2013-02-11 23:11:08
@FrankPavageau在我的其他案例中,accessId可以直接映射到特定值。我的用例需要一個Access ID,然後從各個集合中抓取幾個數據以構建對各種Web服務進行身份驗證所需的對象。我沒有在這個片段中提供任何其他具體信息,因爲即使它不代表真實信息,它也可以說明我需要完成的任務。正如我在問題中所述,我不相信BiMap是正確的,所以如果您有其他建議,請告訴我。 – 2013-02-12 02:05:47