实现多键值映射

时间:2014-04-03 15:34:42

标签: java data-structures

我的情况是我需要一个键值对数据结构。但它应该允许多个键和值对应。

就像是:

  

a - 1

     

b - 2

     

a - 3

因此,在检索时,我可以拥有getFirstValueOfKey(key)并获得1 ......类似的东西。

是否存在某些内容或我需要实现此内容?

如果我需要实现这一点,我打算继续:

创建一个类,a =可以保存K-V对,并将它们添加到列表中。并编写相应的API。这是正确的方法吗?我要继续这样吗?

编辑:我实际上想要数据结构中的多个键条目。

编辑:问题是,我想保持新条目(键)的顺序,即我想要按键的顺序如何放置,(a然后是b和然后a)。如果使用数组值,则此序列将丢失。

示例:

a - > 1(时间0) b - > 2(时间1) a - > 3(时间2)

这些时间戳也是必需的。

2 个答案:

答案 0 :(得分:6)

您可以查看来自Google的Guava库的MultiMap

  

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

     

a - > 1a - > 2a - > 4b - > 3 c - > 5或作为从唯一键到的映射   价值集:

     

a - > [1,2,4] b - > 3 c - > 5

虽然你有一个jar依赖,但Guava集合通常更简洁高效

答案 1 :(得分:2)

看起来你正在寻找Map<Character, List<Integer>>

自编辑问题以来: 依赖每个键的键顺序和值,

  • 您应该使用Map.Entry实施列表,(例如来自Apache Commons的Pair),其中:List<Map.Entry<Character, List>> struct = new ArrayList<Pair<Character, ArrayList>>();

  • 或者如果您不想添加其他库,而不是Pair,则可以只使用Map(女巫将始终包含1个密钥 - 您的信件):{{ 1}}。