Я пытаюсь добавить один список в другой.Это вызывает исключение Concurrent Modification в цикле while, где я вызываю addAll () для добавления элементов списка разрешений в outvec.Мне нужно уменьшить размер списка p в объекте perm, а затем добавить определенную его часть в outvec.Таким образом, это повторяется до тех пор, пока число элементов в списке p объекта perm <= 1. Вот как выглядит мой код: </p>
import java.util.Collections;
import java.util.List;
public class Generate {
//function to generate the output vector
ListGenerator gen(ListGenerator perm, double frac, int n) {
ListGenerator outvec = new ListGenerator();
for(int i = 0; i < n; i++)
perm.p.add(i, i+1);
outvec.p = perm.p;
//System.out.println("p in gen function: " + p);
randomPerm(perm);
int x = perm.p.size();
while( x > 1)
{
perm.p = firstFP(frac, perm);
System.out.println("perm.p after firstFP call " + perm.p);
outvec.p.addAll(perm.p);
System.out.println("size of outvec: " + outvec.p.size());
x = perm.p.size();
}
return outvec;
}
//function to generate random permutation of numbers
private void randomPerm(ListGenerator perm) {
Collections.shuffle(perm.p);
//System.out.println("perm in randomPerm function: " + p);
}
//function to return first f*|p| number of elements from p
List<Integer> firstFP(double f, ListGenerator perm) {
int new_size = (int) (f * perm.p.size());
return( perm.p.subList(0, new_size));
}
public static void main(String args[]) {
Generate g = new Generate();
ListGenerator p = new ListGenerator();
ListGenerator outvec = new ListGenerator();
double frac = 0.3;
int N = 70000;
outvec = g.gen(p, frac, N);
System.out.println("outvec: " + outvec.p);
System.out.println("size of outvec: " + outvec.p.size());
}
}
import java.util.ArrayList;
import java.util.List;
public class ListGenerator {
List<Integer> p = new ArrayList<Integer>();
}
Проблема заключается в том, что в outvec возникает исключение ConcurrentModificationException.p.addAll (температура);это утверждение.Вот что я получаю:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$SubList.checkForComodification(Unknown Source)
at java.util.ArrayList$SubList.size(Unknown Source)
at Generate.gen(Generate.java:17)
at Generate.main(Generate.java:49)
Любое руководство будет высоко оценено.