【发布时间】:2015-12-16 22:12:30
【问题描述】:
我如何能够从其值中获取特定键。除了输入密钥并获取值之外,我如何能够输入值并获取密钥?
【问题讨论】:
-
你在使用HashMap吗?
-
同一个值可能有多个key;你想要哪个?
标签: java
我如何能够从其值中获取特定键。除了输入密钥并获取值之外,我如何能够输入值并获取密钥?
【问题讨论】:
标签: java
你不能用简单的Map 来做到这一点(至少不是以一种有效的方式),因为一个键可以有多个值,并且这些值没有以一种可以快速检索的方式存储。仅使用常规Map,您需要遍历所有条目以找到值的对应键。但是,您可以创建自己的数据结构,其中包含两个映射(一个从 A 到 B,第二个从 B 到 A)以创建具有 1:1 映射的双向映射,您可以在其中从 B 或 B 查找 A在 O(1) 时间内从 A 开始(我没有使用“键”和“值”,因为在双向映射中,两种类型都是)。查看 Guava 中的 BiMap (HashBiMap source code) 以获取相关示例。
【讨论】: