代码如下:
Map map = new HashMap();
Map smap = new HashMap();
Set set = new HashSet();
for(int i = 0;i<4;i++){
smap.clear();
set.clear();
for(int j = 0;j<4;j++){ if(i == j){
set.add(j);
smap.put(j, set);
}
}
map.put(i, smap);
System.out.println(map);
}
输出结果:
{0={0=[0]}}
{0={1=[1]}, 1={1=[1]}}
{0={2=[2]}, 1={2=[2]}, 2={2=[2]}}
{0={3=[3]}, 1={3=[3]}, 2={3=[3]}, 3={3=[3]}}
我想要的结果:
{0={0=[0]}}
{0={0=[0]}, 1={1=[1]}}
{0={0=[0]}, 1={1=[1]}, 2={2=[2]}}
{0={0=[0]}, 1={1=[1]}, 2={2=[2]}, 3={3=[3]}}
请问 怎样修改代码,请贴出代码,谢谢
Map map = new HashMap();
Map smap = new HashMap();
Set set = new HashSet();
for(int i = 0;i<4;i++){
smap.clear();
set.clear();
for(int j = 0;j<4;j++){ if(i == j){
set.add(j);
smap.put(j, set);
}
}
map.put(i, smap);
System.out.println(map);
}
输出结果:
{0={0=[0]}}
{0={1=[1]}, 1={1=[1]}}
{0={2=[2]}, 1={2=[2]}, 2={2=[2]}}
{0={3=[3]}, 1={3=[3]}, 2={3=[3]}, 3={3=[3]}}
我想要的结果:
{0={0=[0]}}
{0={0=[0]}, 1={1=[1]}}
{0={0=[0]}, 1={1=[1]}, 2={2=[2]}}
{0={0=[0]}, 1={1=[1]}, 2={2=[2]}, 3={3=[3]}}
请问 怎样修改代码,请贴出代码,谢谢
Map smap = new HashMap();
Set set = new HashSet();
同时把原先的两句声明删除map在添加引用类型对象时,始终是一个的话,它的内容也会随之改变
不然同一个引用被你put来put去
最后对应的永远是同一个对象 Map map = new HashMap();
Map smap = null;
Set set = null;
for (int i = 0; i < 4; i++) {
smap = new HashMap();
set = new HashSet();
for (int j = 0; j < 4; j++) {
if (i == j) {
set.add(j);
smap.put(j, set);
}
}
map.put(i, smap);
System.out.println(map);
}