循环往list中add对象却总是add的是一个对象
2017-09-05 11:57
330 查看
在new 一个对象的时候,对象的ID是唯一确定的;将对象add入list中时,放入list中的其实是对象的引用 ;而每次循环只是简单 的set 对象的属性,set新的属性值,而add进list中的对象还是同一个对象id,也就是同一个对象;
所以每次add之后,list发现对象引用和之前元素一样,就覆盖掉了之前add的对象。所以循环之后list中的对象是重复的对象。
想要避免这个问题只要每次add时保证对象引用都是不同的即可,即每循环一次重新new一个对象。
new的对象应该放在for循环内,每循环一次重新new一个新对象
[java]
view plain
copy
List<MaterialPriceInfoModel> listModel = new ArrayList<MaterialPriceInfoModel>();
MaterialPriceInfoModel model = new MaterialPriceInfoModel();</span>
int num=0;
for (int i = 1, j = sheet.getLastRowNum(); i <= j; i++) {
model.setSupplyId(supplyId);
model.setSupplyCode(SupplyCode);
model.setSupplyName(SupplyName);
MaterialPriceInfoKey theKey = (MaterialPriceInfoKey) bizImpl.insert(model);
if(theKey!=null){
num++;
System.out.println("成功导入1条数据!");
}
listModel.add(model);
}
theForm.setListModel(listModel);
所以每次add之后,list发现对象引用和之前元素一样,就覆盖掉了之前add的对象。所以循环之后list中的对象是重复的对象。
想要避免这个问题只要每次add时保证对象引用都是不同的即可,即每循环一次重新new一个对象。
new的对象应该放在for循环内,每循环一次重新new一个新对象
[java]
view plain
copy
List<MaterialPriceInfoModel> listModel = new ArrayList<MaterialPriceInfoModel>();
MaterialPriceInfoModel model = new MaterialPriceInfoModel();</span>
int num=0;
for (int i = 1, j = sheet.getLastRowNum(); i <= j; i++) {
model.setSupplyId(supplyId);
model.setSupplyCode(SupplyCode);
model.setSupplyName(SupplyName);
MaterialPriceInfoKey theKey = (MaterialPriceInfoKey) bizImpl.insert(model);
if(theKey!=null){
num++;
System.out.println("成功导入1条数据!");
}
listModel.add(model);
}
theForm.setListModel(listModel);
相关文章推荐
- 循环往list中add对象却总是add的是一个对象
- 循环往list中放对象却总是一个对象的问题
- 定义一个List集合并实例化对应的实现类对象。循环输入任意个整数,输入0结束输入循环,对集合中的数据进行从大到小的排序后输出
- C#.NET底层 List 集合循环添加对象(如:list.add(model)),为什么会出现整个list集合都是一样的数据?
- for循环一个list,元素赋值给另一个对象,修改另一个对象,竟然可以修改list
- list的add方法 ,foreach循环添加map---List.add(map)(通过一个java爬虫案例说明)
- Android进阶(四)一个APP引发的思索之ArrayList的add总是添加相同的值
- 简化以下程序,将函数对象 divide_by 转换为一个函数,并将 for 循环替换为用一个标准的 C++ 算法来输出数据
- ArrayList<Integer> list = new ArrayList<Integer>();在这个泛型为 Integer 的 ArrayList 中存放一个 String 类型的对象。
- Python把同一个对象循环赋值给另外一个变量
- 将一个字符串对象数组转化为List<对象>
- list.add(),向List集合插入对象报空指针异常
- jstl中取map,其中map的key是一个对象,value是一个list
- 在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型XXX的对象时检测到循环引用。
- 面向对象2-List list中的这个list到底是不是一个List
- java 的List add 不同类型的对象
- 实例化的对象和引用...while(**.next()){实例化位置 、、***list.add(实例化的那个对象) }
- C# List<> add函数总是覆盖List中原有元素的解决办法
- Android进阶(四)一个APP引发的思索之ArrayList的add总是添加相同的值
- 不良代码展示-不要用数组循环判断等于的方式,来判断一个对象是否在一个集合内