2011-09-08 115 views
4

我搜索一个数据结构,我可以存储几个键值对。如何将多个值存储到一个键(java)

的数据基本上是这样的:

(1 , value_1) 
(2 , value_2) 

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

(在上面的例子:

(1 , value_2) 

可能是另一个进入)

是否存在的performantly存储这些数据,除了与新对象或类似这样的东西创建一个列表的任何方式。

get(1) 

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

在此先感谢

回答

0

你可以使用HashMap<Integer,Set<T>>HashMap<Integer,List<T>>,其中Tvalue_1类型,value_2

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

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); 
} 
相关问题