Sar*_*rah 1 java dictionary list 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);
Run Code Online (Sandbox Code Playgroud)
当我尝试hmap通过执行以下操作来检索特定键的值时:
List<Integer> dimensions = hmap.get("A")
Run Code Online (Sandbox Code Playgroud)
我期待哈希映射返回,[9,8,7,6]但它返回ArrayList中的所有内容,即[9,8,7,6,5,4,3,2,7,6,5,4,2,3,4,5].如何使数组列表仅将第一个值推送到该键中HashMap?我错过了什么?
我也试过valueList.clear()每个之后hmap.put() statement.这导致只推送最后一组值,即,[2,3,4,5]对于所有键 HashMap.
之所以发生这种情况,是因为您valueList一次又一次地使用相同的内容,不断更新值.
为每个地图条目添加一个新的分隔列表.
// ...
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |