Я нахожусь в очень странном состоянии. У меня есть список что-то вроде ниже: -
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
Теперь, когда я делаю обход нескольких типов, например, использую расширенный для, итератор и нормальный для цикла, ниже приведены примеры фрагментов кода: -
1> Расширенный цикл: -
try {
for(String a : list) {
System.out.println(a);
list.add("f");
}
} catch (Exception e) {
e.printStackTrace();
}
2> Итератор: -
try {
Iterator<String> itr = list.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
list.add("f");
}
} catch (Exception e) {
e.printStackTrace();
}
3> Нормальный цикл: -
for (int i=0;i<list.size();i++) {
System.out.println(list.get(i));
list.add("f");
}
Теперь особая проблема заключается в том, что при использовании расширенного цикла for и итератора я получаю следующее исключение: -
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
the reason i know, that while iterating through a list, one cannot modify it parallely.
но когда я использую цикл for, то он работает правильно, я что-то упустил ??
Пожалуйста, помогите !!! ..