我想在映射中存储具有多个值的键。 例如:我从 ArrayList 读取字符串键,从另一个 ArrayList 读取整数值:
Keys Values
humans 50
elfs 20
dwarfs 30
humans 40
elfs 10
我想像这样存储这些信息:Map < String, ArrayList < Integer>>
[humans = {50,40}]
[elfs = {20,10}]
[dwarfs = {30}]
有可能做到这一点吗?
最佳答案
我建议使用Guava MultiMap 。或者,您的
Map<String, ArrayList<Integer>>
也将实现这一点。当做put
时,判断是否已经存在与该键关联的列表;如果有那么你的put
将是 get(key).add(value)
,否则它将是 put(new List(value))
。同样是remove
将从关联列表中删除一个值,或者如果这将导致空列表,则将完全删除该列表。
另外,一个 Map<String, HashSet<Integer>>
可能会比列表映射带来更好的性能;如果您想将重复的值与键关联起来,显然不要这样做。
关于java - 在映射中存储具有多个值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15955752/