迭代arraylist并获得行明智列表

时间:2012-07-29 11:19:50

标签: arraylist

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

2 个答案:

答案 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将包含所有值。

相关问题