我应该使用哪种数据结构来存储和检索以下数据? (KEY1,VAL1)(KEY1,val2)将(KEY1,VAL3)(KEY2,VAL4)(KEY2,val5)(KEY2,VAL6)(KEY3,val7)(KEY3,的Val8)(KEY3,val9)
请帮帮我。
答案 0 :(得分:6)
查看Google Guava的Multimap及其子类型ListMultimap和SetMultimap。
来自Multimap的javadoc:类似于Map的集合,但可以将多个值与a关联 单键。
答案 1 :(得分:2)
Map<Key, Collection<Value>>
是最好的方法
答案 2 :(得分:1)
您可以拥有一个Map,其中值是List / Set之类的集合,具体取决于您的对是否不同。
如果你有不同的对,你可以选择Set interface:
Map<key, Set<value>>
Ex Map<key, HashSet<Value>>
如果你没有不同的对((key1,val1),(key1,val1))你可以去List接口:
Map<key, List<value>>
Map<key, ArrayList <Value>>
答案 3 :(得分:1)
我不知道它是否适合您,但如果值是唯一的并且使用标准Map<ValueType, KeyType>
答案 4 :(得分:0)
我们可以使用MultiValueMap
来自Commons collections
。
参考: http://commons.apache.org/proper/commons-collections/
示例:
MultiValueMap map = new MultiValueMap();
map.put("SAN", 4);
map.put("SAN", 6);
map.put("TOM", 7);