我的情况是我需要一个键值对数据结构。但它应该允许多个键和值对应。
就像是:
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)
这些时间戳也是必需的。
答案 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}}。