Java foreach循环中的ConcurrentModificationException,即使我没有';不要从arraylist中删除任何内容

Java foreach循环中的ConcurrentModificationException,即使我没有';不要从arraylist中删除任何内容,java,exception,arraylist,foreach,Java,Exception,Arraylist,Foreach,我知道也有类似的问题,但我看了一遍,没有找到答案 我的代码是单线程的,它没有删除任何内容,也没有在循环过程中修改arraylist,只是添加 代码: ArrayList<Record> records = helper.get(); System.out.println("Records in arraylist: " + records.size()); for (Record x : records) { System.out.println("Begin

我知道也有类似的问题,但我看了一遍,没有找到答案

我的代码是单线程的,它没有删除任何内容,也没有在循环过程中修改arraylist,只是添加

代码:

ArrayList<Record> records = helper.get();
System.out.println("Records in arraylist: " + records.size());
    for (Record x : records) {
        System.out.println("Begin");
        Record record = new Record(many parameters);
        System.out.println("Middle");
        records.add(record);
        System.out.println("End");
    }
    System.out.println("Done reading records and inserting them to arrayList");
在这里您可以修改您的数组

 records.add(record);
您在此行中修改了ArrayList

您可以将for each循环改为indexed for循环,以防止出现
ConcurrentModificationException
,或者您可以创建一个新的
ArrayList
来保存记录:

ArrayList<Record> records = helper.get();
ArrayList<Record> result = new ArrayList<Record>();
for (Record x : records) {
    Record record = new Record(many parameters);
    result.add(record);
}
arraylistrecords=helper.get();
ArrayList结果=新建ArrayList();
用于(记录x:记录){
记录=新记录(多个参数);
结果.添加(记录);
}
 records.add(record);
ArrayList<Record> records = helper.get();
ArrayList<Record> result = new ArrayList<Record>();
for (Record x : records) {
    Record record = new Record(many parameters);
    result.add(record);
}