我有以下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