我应该将哪个集合类用于以下数据
(key1, value1)
(key1, value2)
(key2, value3)
(key3, value3)
键和值不明显
答案 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());