java - 在映射中存储具有多个值的键

标签 java collections

我想在映射中存储具有多个值的键。 例如:我从 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/

相关文章:

java - 如何在 Java 中从数组 (int[]) 创建 ArrayList (ArrayList<Integer>)

java - HashMap 中的键排序是什么?

java - 如何创建引用其他变量的数组?

ios - 迁移到 Swift 3 遇到麻烦 : String. 对应于 'startIndex' 的CharacterView

java - 如何将库附加到 JAR 文件?

java - 如何设置对话框内文本的点击方法

java - H2 数据库用户定义的 java 函数类未找到

java - 模拟 CloseableHttpClient 在测试时仍将连接传递到真实服务器

Java 按同一字段对项目进行两次排序

java - 执行 Java 类时发生异常。 java.lang.InterruptedException