Apabila melelaran melalui ArrayList, cuba untuk mengalih keluar elemen semasa lelaran boleh menghasilkan java.util.ConcurrentModificationException . Ini berlaku disebabkan oleh mekanisme gagal pantas ArrayList, yang mengesan sebarang perubahan pada struktur senarai semasa lelaran dan membuang pengecualian untuk mengelakkan hasil yang tidak dijangka.
Untuk menyelesaikan isu ini, terdapat dua pendekatan utama yang perlu dipertimbangkan:
Pendekatan ini melibatkan mengenal pasti elemen yang akan dialih keluar dalam gelung dan menambahkannya ke senarai berasingan. Setelah lelaran selesai, alih keluar semua elemen daripada senarai asal menggunakan kaedah removeAll().
<code class="java">ArrayList<A> valuesToRemove = new ArrayList<>(); for (A a : abc) { if (a.shouldBeRemoved()) { valuesToRemove.add(a); } } abc.removeAll(valuesToRemove);</code>
Sebagai alternatif, anda boleh menggunakan iterator sendiri kaedah keluarkan(). Walau bagaimanapun, ambil perhatian bahawa pendekatan ini memerlukan penggunaan gelung untuk tradisional dan bukannya gelung untuk dipertingkatkan.
<code class="java">for (Iterator<A> iterator = abc.iterator(); iterator.hasNext();) { A a = iterator.next(); if (a.shouldBeRemoved()) { iterator.remove(); } }</code>
Dengan melaksanakan salah satu pendekatan ini, anda boleh mengelakkan ConcurrentModificationException sambil mengubah suai ArrayList anda dengan berkesan semasa lelaran.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan ConcurrentModificationException Apabila Mengalih Keluar Elemen daripada ArrayList Semasa Lelaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!