Я пытаюсь перебирать списки или списки, но все время получаю CME, даже используя Iterator для удаления и добавления элементов при переборах списков.
Я искал здесь в сообществе похожие вопросы, но те, которые я нашел, не помогли мне. Очень надеюсь, что вы, ребята, помогите мне понять, как сделать то, что мне нужно.
У меня есть ListIterator<List<Event<T>>> itrListsEvent = partitionSubLists.listIterator();
partitionSubLists
- это A list of lists
. Итак, у меня есть один больший список , и внутри него у меня есть четыре подсписка.
Мне нужно перебрать подсписки, и пока я перебираю, я удаляю и добавляю элементы. После окончания итерации по первому подсписку мне нужно go переслать, чтобы перебрать второй подсписок и т. Д. И т. Д.
Это то, что я сделал до сих пор:
public List<List<Event<T>>> partitionedLists (List<Event<T>> list)
{
int listSize = list.size();
int partitionSize = listSize / 4;
List<List<Event<T>>> partitions = new ArrayList<>();
for (int i = 0; i < listSize; i += partitionSize)
{
partitions.add(list.subList(i, Math.min(i + partitionSize, list.size())));
}
return partitions;
}
List<List<Event<T>>> partitionSubLists = partitionedLists(List<Event<T>>);
ListIterator<List<Event<T>>> itrListsEvent = partitionSubLists.listIterator();
while(itrListsEvent.hasNext())
{
List<PrefixEvent<T>> listPE = new ArrayList<Event<T>>();
listPE = itrListsPrefixEvent.next();
ListIterator<Event<T>> itrEvent = listPE.listIterator();
while(itrEvent.hasNext())
{
//here I remove and add elements inside the sublist.
//when finished, I need to go back to first while and go forward to the next sublists
//and in this moment, i got ConcurrentModificationException
itrEvent.remove()
.
.
.
// some code here
itrEvent.add(new Event<T>);
}
}