存储键值对的最佳 Java 数据结构 [重复]
Posted
技术标签:
【中文标题】存储键值对的最佳 Java 数据结构 [重复]【英文标题】:Best Java Datastructure to store key Value Pair [duplicate] 【发布时间】:2013-01-14 01:55:18 【问题描述】:可能重复:Java Hashmap: How to get key from value?Bi-directional Map in Java?
我想要一个 key value data structure
用于 android 应用程序。我可以使用Map<K,V>
,但在Map
中我无法获取特定值的密钥。
是否有任何好的 Java 数据结构,我可以使用它按值检索键,反之亦然。
【问题讨论】:
看番石榴的BiMap 你可以实现一个小方法来做到这一点;这将是 4 行代码;而不是使用任何第三方。 @Deepak 对于这样的一般用例,最好使用经过良好测试和广泛接受的库。你会避免很多痛苦。 ***.com/questions/10699492/bi-directional-map-in-java 和 ***.com/questions/1670038/… 的完全重复 ***.com/questions/1383797/…的第二个答案 【参考方案1】:即使您不知道 Map 中的任何键,您也可以将 Map 与 entrySet 和 Map.Entry 类一起使用来迭代并获取键和值。
Map <Integer,String> myMap = new HashMap<Integer,String>();
Iterator<Entry<Integer, String>> iterator = myMap.entrySet().iterator();
while (iterator.hasNext())
Map.Entry<Integer,String> pairs = (Map.Entry<Integer,String>)iterator.next();
String value = pairs.getValue();
Integer key = pairs.getKey();
System.out.println(key +"--->"+value);
【讨论】:
当然可以。但随着条目数量的增加,它会越来越慢。他最好使用BiMap
但是他不需要放一个新的 jar 文件并使他的应用程序变得沉重,而且我没有发现性能有任何明显的变化。
您更喜欢随着时间的推移变慢的应用程序,还是最初下载时(一点点)变大的应用程序?
取决于...此外,bi map 将在内部维护两个地图,并且不允许我重复值
这很有意义:如果您有重复的值,您会选择哪个键进行反向查找?这就是 OP 正在尝试做的事情。【参考方案2】:
使用谷歌番石榴BiMap
如何在Android中使用Guava Libraris是here
【讨论】:
【参考方案3】:The best data structure would be Java HashMaps check this link你可以使用get(Object key)
方法
【讨论】:
以上是关于存储键值对的最佳 Java 数据结构 [重复]的主要内容,如果未能解决你的问题,请参考以下文章