如何将多个值存储到一个键(java)

时间:2011-09-08 16:02:01

标签: java data-structures key-value

我搜索数据结构,在那里我可以存储几个键值对。

数据基本上如下所示:

(1 , value_1)
(2 , value_2)

所以我想到了使用HashMap。遗憾的是,这对我不起作用,因为可能会出现一个键的多个值。

(在上面的示例中:

(1 , value_2)

可能是另一个条目)

是否有任何方式可以正常存储此数据,除了使用新对象或类似内容创建List。

get(1)

应该返回value_1和value_2作为列表或集合或类似的东西。

提前致谢

3 个答案:

答案 0 :(得分:6)

我认为您正在寻找的数据结构位于Google的guava库MultiMap中。见http://guava-libraries.googlecode.com/svn-history/r13/trunk/javadoc/com/google/common/collect/Multimap.html

基本上它是Map<K,Collection<V>>,但界面更易于使用。

答案 1 :(得分:5)

如果键是整数,并且值是例如字符串,属于一个键的值是不同的,您可以使用例如普通的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);
}

答案 2 :(得分:0)

您可以使用HashMap<Integer,Set<T>>HashMap<Integer,List<T>>,其中T类型为value_1value_2等。

基本上,get可以开箱即用。添加元素有点麻烦;你可以写一个简短的包装函数来使它更好。