Java 实现多键值映射
我需要一个键值对数据结构。但它应该允许多个键和相应的值 就像: a-1 b-2 a-3 因此,在检索时,我可以使用Java 实现多键值映射,java,data-structures,Java,Data Structures,我需要一个键值对数据结构。但它应该允许多个键和相应的值 就像: a-1 b-2 a-3 因此,在检索时,我可以使用getFirstValueOfKey(key)并获得1…类似的值 是否存在一些问题或我需要实施这些问题 如果我需要实施这一点,我想继续: 创建一个类,a=可以保存K-V对,并将它们添加到列表中。并根据需要编写相应的API。这是正确的方法吗?我要继续这样吗 编辑:我实际上希望数据结构中有多个键条目 编辑:问题是,我想保持新条目(键)的顺序,也就是说,我想知道如何放置键的顺序(a、b、a
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
操作,请使用mapget
获取列表,然后获取列表的第一个元素。让程序将(key,[val1,val1,val3…])视为(key,val1),(key,val2),(key,val3)并不难。@Batty,我不理解你的问题,你想要有多个键,同时保持值的顺序,我的解决方案解决了这个问题。您不能依赖于Map
中的键顺序。我想依赖键顺序。编辑的问题。我想依赖于键的顺序。已编辑的问题。那么您可能需要使用。另见。虽然我自己还没有测试过,但这是必须的很高兴它有帮助:-你会考虑选择它作为正确答案吗?干杯