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();
}
Run Code Online (Sandbox Code Playgroud)
为什么最后一个值arraylist会被所有键覆盖?如何避免过度写作?
你需要移动这一行:
ArrayList<Integer> al = new ArrayList<Integer>();//arraylist as value
Run Code Online (Sandbox Code Playgroud)
在循环内.
您想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);//key value
map.put(j, al);
System.out.println(map);
}
Run Code Online (Sandbox Code Playgroud)