Java中适用于重复键,值对的集合类

时间:2014-03-03 07:41:01

标签: java collections

我应该将哪个集合类用于以下数据

(key1, value1)
(key1, value2)
(key2, value3)
(key3, value3)

键和值不明显

3 个答案:

答案 0 :(得分:2)

你可以推出自己的实现:

Map<Key, List<Value>> 

或使用Multimap from Guava,在他们的文档中将其解释为:

  

有两种方法可以从概念上考虑Multimap:作为从单个键到单个值的映射的集合:

     

a - &gt; 1a - &gt; 2a - &gt; 4b - &gt; 3 c - &gt; 5

     

或作为从唯一键到值集合的映射:

     

a - &gt; [1,2,4] b - &gt; 3 c - &gt; 5

以下blog post解释了使用番石榴系列的一些优点。

如果您对外部库有偏好,还有MultiValueMap from the Apache Commons Collections可以解决同样的问题。

答案 1 :(得分:0)

此用例的另一种可能性是Apache Commons Collections的MultiValueMap

答案 2 :(得分:0)

Map<List<String>,List<String>> map = new HashMap<List<String>,List<String>>();
List keys = new ArrayList();
keys.add("one");keys.add("one");keys.add("two");keys.add("three");
List values = new ArrayList();
values.add("First");values.add("First12");values.add("second");values.add("second");
map.put(keys, values);
System.out.println(map.keySet().toString());
System.out.println(map.values().toString());
System.out.println("map:"+map.toString());