私は英語が苦手で、プログラミングの初心者なので、しばらくお待ちください。
最初に私のコードを見て、私が問題を抱えていることをよりよく理解してください。
という名前のオブジェクトを作成しましたObjAbc.java
:
package exer;
public class ObjAbc {
private Integer code;
private Integer value;
public ObjAbc () {
}
public ObjAbc (Integer code, Integer value) {
this.code = code;
this.value = value;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
@Override
public String toString() {
return "ObjAbc [code=" + code + ", value=" + value + "]";
}
}
それから私はクラスを持っていますObjAbcTest.java
package exer;
import java.util.ArrayList;
import java.util.List;
public class ObjAbcTest {
public static List<ObjAbc> populateList() {
List<ObjAbc> objAbcs = new ArrayList<ObjAbc>();
objAbcs.add(new ObjAbc(1, 11));
objAbcs.add(new ObjAbc(2, 25));
objAbcs.add(new ObjAbc(3, 125));
objAbcs.add(new ObjAbc(4, 73));
objAbcs.add(new ObjAbc(5, 12));
objAbcs.add(new ObjAbc(1, 12));
objAbcs.add(new ObjAbc(3, 1));
return objAbcs;
}
public static void main(String[] args) {
List<ObjAbc> list = populateList();
List<ObjAbc> newList = new ArrayList<ObjAbc>();
for (ObjAbc o : list) {
if (!newList.isEmpty()) {
for (ObjAbc n : newList) {
if (o.getCode().intValue() == n.getCode().intValue()) {
n.setValue(n.getValue() + o.getValue());
break;
}
else {
newList.add(o);
}
}
}
else {
newList.add(o);
}
}
for (ObjAbc n : newList)
System.out.println(n.toString());
}
}
私がやろうとしてObjAbc
いるのは、同じコードを持つすべての値ObjAbc
を合計することですが、値を合計した後に他の値を削除します。つまり、オブジェクトを一度表示する必要がありますが、値は合計でなければなりません。
例:
入力:
ObjAbc [code=1, value=11]
ObjAbc [code=2, value=25]
ObjAbc [code=3, value=125]
ObjAbc [code=4, value=73]
ObjAbc [code=5, value=12]
ObjAbc [code=1, value=12]
ObjAbc [code=3, value=1]
期待される出力:
ObjAbc [code=1, value=23]
ObjAbc [code=2, value=25]
ObjAbc [code=3, value=126]
ObjAbc [code=4, value=73]
ObjAbc [code=5, value=12]
しかし、私が得るものは次のとおりです。
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at exer.ObjAbcTest.main(ObjAbcTest.java:25)