[英]How to store several values to one key (java)
我搜索一个数据结构,在那里我可以存储几个键值对。
数据基本上如下所示:
(1 , value_1)
(2 , value_2)
所以我想到了使用HashMap。 遗憾的是,这对我不起作用,因为可能会出现一个键的多个值。
(在上面的例子中:
(1 , value_2)
可能是另一个条目)
有没有办法按性能存储这些数据,除了使用新的Object或类似的东西创建List。
get(1)
应该返回value_1和value_2作为列表或集合或类似的东西。
提前致谢
我认为你正在寻找的数据结构是google的guava库,MultiMap。 请参阅http://guava-libraries.googlecode.com/svn-history/r13/trunk/javadoc/com/google/common/collect/Multimap.html 。
基本上它是Map<K,Collection<V>>
但具有更易于使用的界面。
如果键是整数并且值是例如字符串,并且属于一个键的值不同,则可以使用例如普通Java结构:
Map<Integer, HashSet<String>> container = new HashMap<Integer, HashSet<String>>();
void add(Map<Integer, HashSet<String>> container, int key, String value) {
HashSet<String> values = container.get(key);
if (values == null) {
values = new HashSet<String>();
}
values.add(value);
container.put(key, values);
}
您可以使用HashMap<Integer,Set<T>>
或HashMap<Integer,List<T>>
,其中T
是value_1
的类型, value_2
等。
基本上, get
会做你想要的开箱即用。 添加元素有点麻烦; 你可以编写一个简短的包装函数来使它更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.