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());

            }
        }

ただし、反復中に2番目の値が最初の値と重複するため、最終値になると、変数には最後の行の値のみが含まれます。

行ごとのリストを保存して別のリストに入れる方法はArrayList?

4

2 に答える 2

0

私の意見では、静的セッターメソッドは常に同じフィールドを設定するため、最後の反復からの値になります。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 ループの後、結果の arraylist にはすべての値が含まれます。

于 2013-02-15T19:27:57.697 に答える