2015-09-20 199 views
0

我将如何从其价值中获得特定的关键。而不是放入钥匙并获得价值,我将如何能够输入价值并获得钥匙?获取值的密钥而不是获取密钥值?

+1

您使用的是HashMap吗? –

+0

对于相同的值可能有多个键;你想要哪个? –

回答

2

你不能用简单的Map(至少不是以一种有效的方式)来做到这一点,因为一个密钥可以有多个值,并且这些值没有以使得它们快速检索的方式存储。仅使用常规Map,您需要遍历所有条目以查找值的相应键。但是,您可以创建自己的数据结构,其中包含两个地图(一个从A到B,另一个从B到A)创建一个具有1:1映射的双向映射,您可以从B或B查找A从O(1)时间的A(我不使用“key”和“value”,因为在双向映射中,两种类型都是)。查看来自Guava的BiMapHashBiMap source code)就是一个例子。