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
Lepaskan: 2024-10-29 10:14:03
asal
1022 orang telah melayarinya

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

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!

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