Java 实现多键值映射

Java 实现多键值映射,java,data-structures,Java,Data Structures,我需要一个键值对数据结构。但它应该允许多个键和相应的值 就像: a-1 b-2 a-3 因此,在检索时,我可以使用getFirstValueOfKey(key)并获得1…类似的值 是否存在一些问题或我需要实施这些问题 如果我需要实施这一点,我想继续: 创建一个类,a=可以保存K-V对,并将它们添加到列表中。并根据需要编写相应的API。这是正确的方法吗?我要继续这样吗 编辑:我实际上希望数据结构中有多个键条目 编辑:问题是,我想保持新条目(键)的顺序,也就是说,我想知道如何放置键的顺序(a、b、a

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

就像:

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)

这些时间戳也是必需的。

看起来您正在寻找
地图

既然你编辑了这个问题: 要同时依赖键顺序和每个键的值

  • 您应该使用
    Map.Entry
    实现列表(例如来自Apache Commons的
    Pair
    ),其中:
    list struct=new ArrayList()

  • 或者,如果您不想添加额外的库,而不是
    Pair
    ,您可以只使用
    Map
    (该开关将始终包含一个键-您的字母):
    列表


您可以从谷歌上通过库查看
MultiMap

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

a->1A->2A->4B->3C->5或作为从唯一键到 价值集合:

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


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

您还可以解释为什么需要多个键吗?你想依靠钥匙的顺序吗?@ProblemFactory-是的,我想依靠钥匙的顺序。:)就像,一个键有多个值,这不是必需的。实际上我想要多个键。@Batty我看不出有什么区别。这完全取决于你如何访问它。如果要执行
getFirstValueOfKey
操作,请使用map
get
获取列表,然后获取列表的第一个元素。让程序将(key,[val1,val1,val3…])视为(key,val1),(key,val2),(key,val3)并不难。@Batty,我不理解你的问题,你想要有多个键,同时保持值的顺序,我的解决方案解决了这个问题。您不能依赖于
Map
中的键顺序。我想依赖键顺序。编辑的问题。我想依赖于键的顺序。已编辑的问题。那么您可能需要使用。另见。虽然我自己还没有测试过,但这是必须的很高兴它有帮助:-你会考虑选择它作为正确答案吗?干杯