public static void main(String[] args) {
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
a.add("23");
for (String temp : a) {
if ("23".equals(temp)) {
a.remove(temp);
}
}
System.out.println(a);
}
Pengecualian dalam utas "utama" java.util.ConcurrentModificationException
di java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
di java.util.ArrayList$Itr.next(ArrayList.java:851)
wan.ForEach.main(ForEach.java:22)
foreach
是通过迭代器来实现的,使用迭代器遍历元素时,容器不能试图改变容器的结构,如remove、add操作会抛出异常; 可以使用迭代器的remove
Kaedah untuk memadam elemen.Orang di atas menyatakannya dengan sangat jelas. Di sini saya akan memberitahu anda dua penyelesaian mudah
1 pemadaman Iterator
2. Salin senarai untuk melintasi, dan kemudian kendalikan senarai asal.
Apa yang dikatakan di tingkat atas adalah sangat rasmi, secara terang-terangan, dalam kaedah for(Object obj:list), anda tidak boleh memanggil kaedah alih keluar senarai untuk memadam elemen, jika tidak pengecualian akan dilemparkan, kerana Iterator. memerlukan struktur tertentu, jadi terdapat dua cara untuk memadamnya Satu ialah menyalin senarai dan mengalih keluar elemen dalam senarai lama dengan menggelung senarai baharu, dan satu lagi adalah menggunakan untuk(int i; i<count; i++. ) Gelung dalam borang ini, supaya anda boleh memadamkannya melalui kursor. Hanya berhati-hati untuk tidak melintasi sempadan subskrip tatasusunan.
Apabila anda mengira telur, jika seseorang secara rahsia memasukkan telur ke dalam bakul anda atau mengambil telur, ia akan menyebabkan anda tersalah mengira Melainkan anda mengambil atau mengambil telur itu sendiri, anda boleh mengingati prinsip yang sama dalam program