Rumah >Java >javaTutorial >Bagaimana untuk Membuang Elemen dengan Selamat dari ArrayList Semasa Lelaran Serentak di Java?

Bagaimana untuk Membuang Elemen dengan Selamat dari ArrayList Semasa Lelaran Serentak di Java?

Susan Sarandon
Susan Sarandonasal
2024-10-29 10:14:03909semak imbas

How to Safely Remove Elements from an ArrayList During Concurrent Iteration in Java?

Mengendalikan ConcurrentModificationException Semasa Lelaran dan Pembuangan Serentak dalam ArrayList

Di Java, mengulang koleksi sambil mengubah suai secara serentak boleh menghasilkan java. util.ConcurrentModificationException. Pengecualian ini timbul apabila struktur koleksi diubah semasa lelaran disebabkan operasi menambah atau mengalih keluar.

Untuk memintas isu ini apabila bekerja dengan ArrayList, pertimbangkan amalan terbaik berikut:

  • Buat Senarai Elemen untuk Dialih Keluar:

    Kekalkan senarai berasingan untuk menjejaki elemen yang perlu dialih keluar. Dalam gelung, cuma tambah elemen pada senarai ini dan bukannya mengalih keluarnya terus daripada senarai asal. Setelah gelung selesai, gunakan kaedah removeAll() ArrayList untuk mengalih keluar semua elemen daripada senarai.

  • Gunakan Kaedah Alih Keluar Iterator:

    Gunakan kaedah remove() tersedia pada iterator itu sendiri. Ambil perhatian bahawa ini memerlukan meninggalkan sintaks gelung Java 8 yang dipertingkatkan untuk lelaran melalui senarai.

Sebagai contoh, jika anda bertujuan untuk mengalih keluar rentetan dengan panjang lebih daripada lima daripada ArrayList:

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

Atas ialah kandungan terperinci Bagaimana untuk Membuang Elemen dengan Selamat dari ArrayList Semasa Lelaran Serentak di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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