java:我想使用键值对,并且键或者值可以重复,在java中找得到对应的类吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java:我想使用键值对,并且键或者值可以重复,在java中找得到对应的类吗?相关的知识,希望对你有一定的参考价值。
因为hashmap的键是唯一的。hashset和ArrayList又不是键值对形式
没有。因为意义就是键是独立的。唯一的。我认为你可以从其他业务方面下手。数据可用实体保存。这样放map和List都是很容易取出键相同的数据。
好吧。下面的哥们的确行。可以。不过必须New的形式。不然也会覆盖。 参考技术A public class faga
public static void main(String[] args)
Map m = new IdentityHashMap();
m.put(new String("1"),"java");
m.put(new String("1"),"js");
m.put(new String("2"), "php");
System.out.println(m);
问题已解决,请看我代码,
输出结果:1=java, 1=js, 2=php
请采纳~~~
参考技术B 你要先确认一件事,如果键重复,获取时希望返回什么。确认以后再讨论别的。存储键值对的最佳 Java 数据结构 [重复]
【中文标题】存储键值对的最佳 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中找得到对应的类吗?的主要内容,如果未能解决你的问题,请参考以下文章
c++multimap问题,假设我有一些键值对<charA,charB>,我想让程序告诉我charA有那些值,而且重复了几次谢谢