我正在迭代ArrayList
并保存这样的值:
operRepList=(List<OperRepDTO>) resultMap.get(CFSConstants.MAP_KEY_RESULT_LIST);
if(!Utilities.isListNullOrEmpty(operRepList)) {
for(OperRepDTO A:operRepList) {
operRepDTO.setComp(A.getComp());
operRepDTO.setContSize(A.getContSize());
operRepDTO.setProdType(A.getProdType());
operRepDTO.setProdDesc(A.getProdDesc());
operRepDTO.setTon(A.getTon());
operRepDTO.setNoOfCont(A.getNoOfCont());
}
}
但迭代时第二个值与第一个值重叠,所以当涉及最终值时,变量只包含最后一行值。
如何存储行明智列表并进入另一个ArrayList
?
答案 0 :(得分:0)
在我看来,静态setter方法总是设置相同的字段,因此最终得到上一次迭代的值。你应该发布operRepDTO类。
答案 1 :(得分:0)
我认为你不是为每次迭代创建对象。你只是在每次迭代中更新operRepDTO对象,因此它只是用当前行值更新,在最后一次迭代它只包含你的最后一行值。
你应该按如下方式修改你的循环:
List<OperRepDTO> result = new ArrayList<OperRepDTO>(operRepList.size());
for(OperRepDTO A:operRepList) {
OperRepDTO operRepDTO = new OperRepDTO ();
operRepDTO.setComp(A.getComp());
operRepDTO.setContSize(A.getContSize());
operRepDTO.setProdType(A.getProdType());
operRepDTO.setProdDesc(A.getProdDesc());
operRepDTO.setTon(A.getTon());
operRepDTO.setNoOfCont(A.getNoOfCont());
results.add(operRepDTO);
}
因此,在for循环之后,结果arraylist将包含所有值。