0

私は次のコードを使用しており、最後にcalssEntriesリストで最後に複製された値をリストしました。つまり、デバッグすると正しいデータを表示できますが、2回目の反復では、最初のデータエントリの値が上書きされ、2番目の値が表示されます。私がここで見逃しているのは2回などですか?

String memberName = null;
String memberValue = null;
List<String> memberList = new ArrayList<String>();
List<String> memberValueList = new ArrayList<String>();+ArrayList<ClassEntry> calssEntries = new ArrayList<ClassEntry>();

...
while (dataRow != null) {
    memberList.clear();
    memberValueList.clear();

    for (int i = 1; i < dataArray.length; i += 2) {         
        memberName = dataArray[i];
        memberList.add(memberName);
        memberValue = dataArray[i + 1];
        memberValueList.add(memberValue);
    }

    ClassEntry classEntry = new ClassEntry();
    classEntry.setClassName(className);
    classEntry.setMemberName(memberList);
    classEntry.setMemberValue(memberValueList);
    calssEntries.add(classEntry);


....
4

2 に答える 2

0

これを試して

for (int i = 1; i < dataArray.length; i += 2) {

  int j = i;

  memberName = dataArray[i];              
  memberList.add(memberName);                
  memberValue = dataArray[j + 1]; 
  memberValueList.add(memberValue);

}
于 2013-02-07T17:21:05.877 に答える
0

問題は、whileループでmemberListとmemberValueListの新しいインスタンスを作成する必要があることだと思います。何かのようなもの:

calssEntries = new ArrayList<ClassEntry>();

...
while (dataRow != null) {
List<String> memberList = new ArrayList<String>();
List<String> memberValueList = new ArrayList<String>();
...
...

コードでは、calssEntriesのエントリは、memberListとmemberValueの同じ(単一の)インスタンスを参照しています。

于 2013-02-07T17:29:03.173 に答える