ArrayList数据add时出现覆盖,及arraylist最后获取到(存储到集合中的)数据相同。
2017-03-27 14:11
281 查看
@Override public ArrayList<TaskDataPackage> getData() { System.out.println("getData()"); ArrayList<TaskDataPackage> dataListCount = new ArrayList<>(); TaskDataPackageList dataPackage; if (groupDataList != null) { // if (true)//判断table 名-未完成 // { ArrayList<TaskDataPackageList> dataListNo = new ArrayList<>(); for (InspectionTask inspectionTask : groupDataList) { dataPackage=new TaskDataPackageList(); dataPackage.setType(getTypeName(Integer.valueOf(inspectionTask.getInspectionMode()!=null?inspectionTask.getInspectionMode():"0"))); dataPackage.setTitle(inspectionTask.getTaskName()); dataPackage.setTime(inspectionTask.getTaskEndTime()); dataPackage.setProgress("3/6"); dataPackage.setMen("张三"); dataListNo.add(dataPackage); // dataPackage.setProgress(inspectionTask.getChildren().get().getExamObjectCount() + "/" + scc.getTotalObjectCount()); } TaskDataPackage taskDataPackageNo = new TaskDataPackage(); taskDataPackageNo.setCount(groupDataList.size()); taskDataPackageNo.setTaskDataPackageList(dataListNo); dataListCount.add(taskDataPackageNo); // } else if(true){//已完成 ArrayList<TaskDataPackageList> dataListHas = new ArrayList<>(); for (InspectionTask inspectionTask : groupDataList) { dataPackage=new TaskDataPackageList(); dataPackage.setType(getTypeName(Integer.valueOf(inspectionTask.getInspectionMode()!=null?inspectionTask.getInspectionMode():"0"))); dataPackage.setTitle(inspectionTask.getTaskName()); dataPackage.setTime(inspectionTask.getTaskEndTime()); dataPackage.setProgress("3/6"); dataPackage.setMen("李四"); dataListHas.add(dataPackage); // dataPackage.setProgress(inspectionTask.getChildren().get().getExamObjectCount() + "/" + scc.getTotalObjectCount()); } TaskDataPackage taskDataPackageHas = new TaskDataPackage(); taskDataPackageHas.setCount(groupDataList.size()); taskDataPackageHas.setTaskDataPackageList(dataListHas); dataListCount.add(taskDataPackageHas); // }else {//已过期 ArrayList<TaskDataPackageList> dataListExp = new ArrayList<>(); for (InspectionTask inspectionTask : groupDataList) { dataPackage=new TaskDataPackageList(); dataPackage.setType(getTypeName(Integer.valueOf(inspectionTask.getInspectionMode()!=null?inspectionTask.getInspectionMode():"0"))); dataPackage.setTitle(inspectionTask.getTaskName()); dataPackage.setTime(inspectionTask.getTaskEndTime()); dataPackage.setProgress("3/6"); dataPackage.setMen("赵六"); dataListExp.add(dataPackage); // dataPackage.setProgress(inspectionTask.getChildren().get().getExamObjectCount() + "/" + scc.getTotalObjectCount()); } TaskDataPackage taskDataPackageExp = new TaskDataPackage(); taskDataPackageExp.setCount(groupDataList.size()); taskDataPackageExp.setTaskDataPackageList(dataListExp); dataListCount.add(taskDataPackageExp); // } } return dataListCount; }
解决办法:ArraylistView :add方法中 数据,,都要重新new 一个。。确保 。add的内容所指向的地址,,部分之前add的数据 指向相同的地址。
原因: add 中的数据 所指向的地址 ,是同一个地址。即后面每次设置 的数据 都会覆盖之前的数据。。所以 最后获取的 arraylist的数据全都一样。
相关文章推荐
- 随机产生【10-50】的整形数据,使用集合的方式对数据存储并统计相同数据出现次数
- 在servlet存储对象的实列化,然后通过jsp把对象中一个方法返回的是Arraylist集合 数据调用出来
- 使用ArrayList.add()时 后面的数据完全覆盖前面的数据
- 存储过程获取最后插入到数据表里面的ID
- ArrayList中add后数据被覆盖的探索
- 把ArrayList集合的数据存储到文本文件中
- ArrayList add方法会导致数据覆盖。
- java ArrayList add()方法数据被覆盖问题
- 把ArrayList集合中的字符串数据存储到文本文件
- ArrayList.add(Object) 前面数据被覆盖的问题
- 关于自定义实体集合绑定datagrid控件在进行编辑时出现错误"向原始数据存储区提交行时出错"的原因.
- ArrayList.add后,前面数据被覆盖的问题
- ArrayList add赋值后,前面数据被覆盖的问题
- ArrayList集合中的字符串数据存储到文本文件|文本文件中读取数据到集合
- 获取List集合中的重复数据和重复次数(适用于有着连续的相同数据项时)
- 存储过程获取最后插入到数据表里面的ID
- 使用ArrayList集合存储数据
- ArrayList.add后,前面数据被覆盖的问题
- 使用企业库调用存储过程(带参数)完成数据获取样例
- 获取某个表的数据,并产生插入这些数据的SQL(主要用于不同服务器间相同结构表的数据复制)。