0

我正在迭代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

4

2 回答 2

0

在我看来,静态 setter 方法总是设置相同的字段,因此您最终会得到上次迭代的值。您应该发布 operRepDTO 类。

于 2012-07-29T20:18:33.383 回答
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 循环之后,结果数组列表将包含所有值。

于 2013-02-15T19:27:57.697 回答