什么是存储和检索重复键,值对的最佳集合?

时间:2011-08-25 10:29:32

标签: java collections

我应该使用哪种数据结构来存储和检索以下数据? (KEY1,VAL1)(KEY1,val2)将(KEY1,VAL3)(KEY2,VAL4)(KEY2,val5)(KEY2,VAL6)(KEY3,val7)(KEY3,的Val8)(KEY3,val9)

请帮帮我。

5 个答案:

答案 0 :(得分:6)

查看Google Guava的Multimap及其子类型ListMultimapSetMultimap

来自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);