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

Ste*_*han 4 java key-value data-structures

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

数据基本上如下所示:

(1 , value_1)
(2 , value_2)
Run Code Online (Sandbox Code Playgroud)

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

(在上面的例子中:

(1 , value_2)
Run Code Online (Sandbox Code Playgroud)

可能是另一个条目)

有没有办法按性能存储这些数据,除了使用新的Object或类似的东西创建List.

get(1)
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

Kev*_*vin 6

我认为你正在寻找的数据结构是google的guava库,MultiMap.请参阅http://guava-libraries.googlecode.com/svn-history/r13/trunk/javadoc/com/google/common/collect/Multimap.html.

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


Jir*_*riz 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);
}
Run Code Online (Sandbox Code Playgroud)