در آموزشهای جاوا کاپ (Containers and Datu structure)، در بخشی که در مورد Iterator است، به این صورت گفته شده که اگر وقتی با استفاده از for each یک لیست را پیمایش کنیم و در هنگام پیمایش یک عنصر از لیست و حذف کنیم، اکسپشن گفته شده پرتاب میشه. اما به کد زیر دقت کنید:
import java.util.ArrayList;
import java.util.List;
public class MainApp {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("PHP");
list.add("Java Script");
list.add("C++");
for (String string : list) {
if (string.equals("Java Script")) {
list.remove(string);
} else {
System.out.println(string);
}
}
}
}
با اجرای برنامه بالا، هیچ اکسپشنی پرتاب نمیشه و خروجی برنامه میشه این:
Java
Python
PHP
اما اگر به آخر لیست بالا، یک عنصر دیگه اضافه کنیم، در این صورت اکسپشن به وجود میاد. علت چیه؟ چرا اینطوری میشه؟