Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mengelakkan ConcurrentModificationException Apabila Mengalih Keluar Elemen daripada ArrayList Semasa Lelaran?

Barbara Streisand
Lepaskan: 2024-10-28 03:18:30
asal
1013 orang telah melayarinya

How to Avoid ConcurrentModificationException When Removing Elements from an ArrayList During Iteration?

Cara Mengendalikan ConcurrentModificationException Apabila Mengubah Suai ArrayList Semasa Memulas

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:

Pilihan 1: Buat Senarai Nilai untuk Dialih Keluar

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>
Salin selepas log masuk

Pilihan 2: Gunakan Iterator Remove

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan