Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mengelakkan ConcurrentModificationException Apabila Mengulang dan Mengubah Suai ArrayList?

Patricia Arquette
Lepaskan: 2024-10-30 08:21:28
asal
794 orang telah melayarinya

How to Avoid a ConcurrentModificationException When Iterating and Modifying an ArrayList?

ConcurrentModificationException berlaku apabila ArrayList dilalui (diulang semula) dan diubah suai pada masa yang sama. Artikel ini meneroka amalan terbaik untuk mengendalikan pengecualian ini, menggariskan pendekatan alternatif.

Mengelakkan Pengecualian Pengubahsuaian Serentak

Untuk mengelakkan pengecualian daripada berlaku, dua pilihan tersedia:

  1. Buat Senarai Nilai untuk Dialih Keluar: Semasa mengulang, tambah nilai yang perlu dialih keluar ke senarai berasingan. Setelah lelaran selesai, panggil kaedah "removeAll" pada senarai asal.
  2. Gunakan Kaedah Alih Keluar Iterator: Daripada mengubah suai ArrayList terus dalam gelung, gunakan kaedah "buang" daripada iterator itu sendiri. Ini memerlukan penggunaan gelung untuk tradisional dan bukannya gelung untuk dipertingkatkan.

Contoh Kaedah Alih Keluar Iterator:

Pertimbangkan senario mengalih keluar rentetan dengan panjang lebih besar daripada 5 daripada ArrayList:

<code class="java">List<String> list = new ArrayList<>();
...
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}</code>
Salin selepas log masuk

Dalam contoh ini, kaedah "alih keluar" pengubah digunakan untuk mengubah suai senarai asal dengan selamat semasa mengulanginya.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan ConcurrentModificationException Apabila Mengulang dan Mengubah Suai ArrayList?. 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