使用put来存储新的键值对时,现有键的Hashmap值将被覆盖。如何预防它? [英] Hashmap values of existing keys getting overwritten upon using put to store a new key-value pair. how to prevent it?

查看:414
本文介绍了使用put来存储新的键值对时,现有键的Hashmap值将被覆盖。如何预防它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  HashMap< Integer,ArrayList< Integer>> map = new HashMap< Integer,ArrayList< Integer>>(); 
ArrayList<整数> al = new ArrayList< Integer>(); // ArrayList作为值

for(int j = 0; j <3; j ++){
for(int i = 0; i < 5; i ++){
al.add(i + j);
}
System.out.println(al);
System.out.println(j); //键值
map.put(j,al);
System.out.println(map);
al.clear();



$ b为什么最后一个值arraylist在所有键上被覆盖?如何避免过度写作?

解决方案

您需要移动此行:

 的ArrayList<整数> al = new ArrayList< Integer>(); // ArrayList作为值

循环内部。 p>

您希望为每个对象创建 ArrayList ,而不仅仅是一个。

  for(int j = 0; j <3; j ++){
ArrayList< Integer> al = new ArrayList< Integer>();
for(int i = 0; i <5; i ++){
al.add(i + j);
}
System.out.println(al);
System.out.println(j); //键值
map.put(j,al);
System.out.println(map);
}


        HashMap<Integer, ArrayList<Integer>> map = new HashMap<Integer, ArrayList<Integer>>();
    ArrayList<Integer> al = new ArrayList<Integer>();//arraylist as value

    for (int j = 0; j < 3; j++) {
        for (int i = 0; i < 5; i++) {
            al.add(i + j);
        }
        System.out.println(al);
        System.out.println(j);//key value
        map.put(j, al);
        System.out.println(map);
        al.clear();
    }

Why does the last value arraylist get overwritten on all keys? How to avoid over writing?

解决方案

You need to move this line:

ArrayList<Integer> al = new ArrayList<Integer>();//arraylist as value

inside the loop.

You want to create the ArrayList for each object, not only one for all.

for (int j = 0; j < 3; j++) {
    ArrayList<Integer> al = new ArrayList<Integer>();
    for (int i = 0; i < 5; i++) {
        al.add(i + j);
    }
    System.out.println(al);
    System.out.println(j);//key value
    map.put(j, al);
    System.out.println(map);
}

这篇关于使用put来存储新的键值对时,现有键的Hashmap值将被覆盖。如何预防它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆