使用put来存储新的键值对时,现有键的Hashmap值将被覆盖。如何预防它? [英] Hashmap values of existing keys getting overwritten upon using put to store a new key-value pair. how to prevent it?
本文介绍了使用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屋!
查看全文