我使用hashmap来存储数据。 问题是我只是注意到hashmap不能有多个相同的密钥。 我还应该使用什么来存储数据的数据:
我正在尝试做的其他事情是在我拨打该密钥时显示某个人的数据。 那么,有没有办法存储多个与一个键相关的值?或者我应该使用其他类型的存储?
答案 0 :(得分:3)
如果将值存储在另一个数据结构(例如链接列表或每个键索引处的树)中,则散列映射可以具有重复键。然后你只需要决定如何处理碰撞。
修改强>
HashMap中
["firstKey"] => LinkedList of (3,4,5)
["secondKey"] => null
["thirdKey"] => LinkedList of (3)
答案 1 :(得分:1)
要扩展Matthew Coxes的答案,您可以扩展Hashtable类,以便它自动管理您的列表,并为您提供多个键的外观。
答案 2 :(得分:1)
Google guava库包含一些集合类型,每个键允许多个元素。 Multimap
是第一个浮现在脑海中的人。
Guava一般包含很多非常方便的实用工具,我认为值得一试。
如果您不能使用外部库,您可以简单地(如Matthew Cox所说)将地图和列表与Map<K, List<V>>
混合。但是这样做起来有点不方便,因为你必须为每个键初始化一个列表。
答案 3 :(得分:1)
我宁愿选择我自己的数据模型并将其存储在列表中,或者如果你想快速访问则映射,例如
public class Player {
private String name;
private List<Float> scores;
}
优点: