我使用Map插入一些对象,同时让对象工作正常, 虽然迭代相同的地图我正确地得到对象的大小,但我只是得到了 最后一个对象,在所有迭代中,对于我的引用,我将所有代码粘贴如下,
package map;
Map<Integer,ListLabcar> ma = new LinkedHashMap<Integer,ListLabcar>();
ListLabcar lc = new ListLabcar();
for(int l =0;l<5;l++){
int j = 0;
for(int i = 0;i<=3;i++){
if(i==l){
System.out.println("ok");
j+=1;
lc.setIn(j);
lc.setS("a-"+l);break;
}
else{
lc.setIn(l);
lc.setS("zero-"+l);
//break;
}
}
ma.put(l, lc);
System.out.println(ma.get(l).getIn());
System.out.println(ma.get(l).getS());
}System.out.println(ma.size());
Set<Integer> ke = ma.keySet();
for(Integer k:ke){
System.out.println(k);
System.out.println("int--->"+ma.get(k).getIn());
System.out.println("sttr--->"+ma.get(k).getS());
}
}
}
答案 0 :(得分:0)
这一行必须在第一个for循环中。
ListLabcar lc = new ListLabcar();
您正在做的是重写值而不在地图中添加新对象。
编辑:
package map;
Map<Integer,ListLabcar> ma = new LinkedHashMap<Integer,ListLabcar>();
for(int l =0;l<5;l++){
ListLabcar lc = new ListLabcar();
int j = 0;
for(int i = 0;i<=3;i++){
if(i==l){
System.out.println("ok");
j+=1;
lc.setIn(j);
lc.setS("a-"+l);break;
}
else{
lc.setIn(l);
lc.setS("zero-"+l);
//break;
}
}
ma.put(l, lc);
System.out.println(ma.get(l).getIn());
System.out.println(ma.get(l).getS());
}
System.out.println(ma.size());
Set<Integer> ke = ma.keySet();
for(Integer k:ke){
System.out.println(k);
System.out.println("int--->"+ma.get(k).getIn());
System.out.println("sttr--->"+ma.get(k).getS());
}
}