存储键值对的最佳 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 数据结构 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

字典

Java的HashMap键值对存储结构解析

java:我想使用键值对,并且键或者值可以重复,在java中找得到对应的类吗?

java 怎么样获取Map中第几个键值对

ES6中Map()和Set()的用法详解

反转字典中键值对的顺序(Python)[重复]