这是我尝试过的:
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/