我使用 hashmap 来存储数据。问题是我刚刚注意到 hashmap 不能有多个相同的键。我还应该使用什么来存储数据看起来像这样的数据:
- 名称1 100.0
- 名称2 99.8
- 名称3 121.5
- ...
我想做的另一件事是在我调用那个键时显示某个人的数据。那么,有没有办法存储与一个键相关的多个值?还是我应该使用其他类型的存储?
我使用 hashmap 来存储数据。问题是我刚刚注意到 hashmap 不能有多个相同的键。我还应该使用什么来存储数据看起来像这样的数据:
我想做的另一件事是在我调用那个键时显示某个人的数据。那么,有没有办法存储与一个键相关的多个值?还是我应该使用其他类型的存储?
如果您将值存储在另一个数据结构(例如链表或每个键索引处的树)中,则哈希图可能具有重复键。然后你只需要决定如何处理碰撞。
编辑:
哈希映射
["firstKey"] => LinkedList of (3,4,5)
["secondKey"] => null
["thirdKey"] => LinkedList of (3)
The Google guava library contain some collection type that allow for more that one element per key. The Multimap
is the first one that come to mind.
Guava in general contain a lot of very convenient utilities, I think its worth checking out.
If you can't use an external library, you can simply (Like Matthew Cox said) mix a map and a List with Map<K, List<V>>
. But that is a bit more inconvenient to work with since you have to initialise a list for every key.
要扩展 Matthew Coxes 的答案,您可以扩展 Hashtable 类,以便它自动为您管理列表,并让您看起来拥有多个键。
我宁愿使用我自己的数据模型并将其存储在列表中,或者如果您想要快速访问,则映射,例如
public class Player {
private String name;
private List<Float> scores;
}
优点: