Seringkali kita ingin menghapus elemen tertentu dari suatu koleksi. Beberapa orang mungkin menulis ini.
Copy kode kodenya sebagai berikut:
public void beroperasi(Daftar daftar){
untuk (Iterator itu = daftar.iterator(); itu.hasNext();) {
String str = (String)itu.berikutnya();
if (str.sama dengan("chengang")){
daftar.hapus(str);
}
}
}
Segera setelah metode penulisan ini dijalankan, pengecualian berikut akan dilaporkan:
Pengecualian di thread "utama" java.util.ConcurrentModificationException
di java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
Karena elemen daftar tidak dapat dihapus saat berada dalam loop. Kemudian saya melakukan ini, metode yang sangat bodoh. Idenya adalah ini: Buat Daftar untuk secara khusus menyimpan elemen yang akan dihapus. Setelah loop, gunakan metode List.removeAll untuk menghapus elemen. Kodenya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
public void beroperasi(Daftar daftar){
Daftar hapusDaftar= DaftarArray baru();
untuk (Iterator itu = daftar.iterator(); itu.hasNext();) {
String str = (String)itu.berikutnya();
if (str.sama dengan("chengang")){
hapusDaftar.tambahkan(str);
}
}
list.removeAll(removeList);
}
Hal ini memang bisa menyelesaikan masalah, namun caranya terlalu rumit, sebenarnya ada cara yang lebih sederhana dan efisien, yaitu menggunakan metode Iterator.remove, sebagai berikut:
Copy kode kodenya sebagai berikut:
untuk (Iterator itu = daftar.iterator(); itu.hasNext();) {
String str = (String)itu.berikutnya();
if (str.sama dengan("chengang")){
itu.hapus();
}
}
Jadi, semakin Anda mengetahui dasar-dasar Java, kode Anda akan semakin sederhana. Sebaliknya, jika kode Anda sangat rumit, pasti ada yang salah dengan metode atau desainnya.