java - 如何将数组列表中的特定值添加到 HashMap 中?

标签 java list dictionary arraylist hashmap

这是我尝试过的:

HashMap<String, List<Integer>> hmap = new HashMap<String, List<Integer>>();
List<Integer> valueList = new ArrayList<Integer>();

valueList.add(9);
valueList.add(8);
valueList.add(7);
valueList.add(6);
hmap.put("A", valueList);


valueList.add(5);
valueList.add(4);
valueList.add(3);
valueList.add(2);
hmap.put("B", valueList);


valueList.add(7);
valueList.add(6);
valueList.add(5);
 valueList.add(4);
hmap.put("C", valueList);


valueList.add(2);
valueList.add(3);
valueList.add(4);
valueList.add(5);
hmap.put("D", valueList);

当我尝试通过这样做从 hmap 检索特定键的值时:

List<Integer> dimensions = hmap.get("A")

我期望 HashMap 返回 [9,8,7,6] 但它返回 ArrayList 中的所有内容,即 [9,8,7,6,5 ,4,3,2,7,6,5,4,2,3,4,5]。如何使数组列表仅将第一个值推送到 HashMap 中的该键?我错过了什么?

我还在每个 hmap.put() 语句 之后尝试了 valueList.clear()。这导致仅推送最后一组值,即 [2,3,4,5] 用于 HashMap 中的所有键。

最佳答案

发生这种情况是因为您一次又一次地使用相同的 valueList 不断更新值。

为每个 map 条目放置一个新的分隔列表。

 // ...
 valueList.add(6);
 hmap.put("A", valueList);

 valueList = new ArrayList<Integer>();
 valueList.add(5);
 // ...
 valueList.add(2);
 hmap.put("B", valueList);

 valueList = new ArrayList<Integer>();
 valueList.add(7);
 // ... etc

关于java - 如何将数组列表中的特定值添加到 HashMap 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51429662/

相关文章:

python - 找到字典键的交集并将它们组合起来

java - 获取 ArrayIndexOutOfBoundsException : 3 while executing Hadoop Pragram on cloudera

java - 通过 Java SAXParser 解析经过 dtd 验证的 XML 文档时如何解析 "questionmarks"?

java - 如何在列注释中设置默认值

python - 从列表生成多个列表

html - 无序列表中 img 下方的奇怪空白

python - 元组和列表的不同访问元素

java - org.postgresql.util.PSQLException : ERROR: syntax error on or near "session_user"

java - Spring数据,按嵌套对象的属性查找

reactjs - 如何在 React TS 中为对象(Map 数据结构)中的每个项目渲染自定义元素?