求大神帮忙看一下我的代码 到底是为什么
java吧
全部回复
仅看楼主
level 1
我在list里存放了 数据, 我现在想修改某条数据( list.get(0).getList().get(0).setCount("14");),结果一下修改了很多条 这是为什么呢?
public static void main(String[] args) {
ArrayList<ShoppingCarList> list = new ArrayList<ShoppingCarList>();
ArrayList<ShoppingCarBean> childlist1 = new ArrayList<ShoppingCarBean>();
ShoppingCarBean a = new ShoppingCarBean();
a.setName("惠氏普存 多维元素片 维矿物类");
a.setSpec("3g×10袋/盒");
a.setPrice("10.00");
a.setCount("1");
childlist1.add(a);
ShoppingCarBean b = new ShoppingCarBean();
b.setName("善存 营养药");
b.setSpec("4g×10袋/盒");
b.setPrice("15.00");
b.setCount("1");
childlist1.add(b);
ShoppingCarList parentlist = new ShoppingCarList();
parentlist.setList(childlist1);
parentlist.setShopname("开封百氏康大药房");
list.add(parentlist);
list.add(parentlist);
list.add(parentlist);
for(int i=0;i<list.size();i++){
ArrayList<ShoppingCarBean> list2 = list.get(i).getList();
for(int j=0;j<list2.size();j++){
String s=list2.get(j).getCount();
System.out.println("before-i:"+i+"j"+j+"count:"+s);
}
}
list.get(0).getList().get(0).setCount("14");
for(int i=0;i<list.size();i++){
ArrayList<ShoppingCarBean> list2 = list.get(i).getList();
for(int j=0;j<list2.size();j++){
String s=list2.get(j).getCount();
System.out.println("after-i:"+i+"j"+j+"count:"+s);
}
}
}
2016年08月31日 14点08分 1
level 9
……………
2016年08月31日 15点08分 2
level 9
list.add(parentlist)问题,你add好几次,实际上这几个都指向同一块内存,你改就全改了
2016年08月31日 15点08分 4
1