Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengelakkan ConcurrentModificationException Apabila Mengulang dan Mengubah Suai Senarai Java?

Bagaimanakah Saya Boleh Mengelakkan ConcurrentModificationException Apabila Mengulang dan Mengubah Suai Senarai Java?

DDD
Lepaskan: 2024-11-29 13:25:11
asal
569 orang telah melayarinya

How Can I Avoid ConcurrentModificationException When Iterating and Modifying a Java List?

Memahami Pengecualian Pengubahsuaian Serentak dalam Java

ConcurrentModificationException berlaku apabila berbilang benang secara serentak mengubah suai koleksi boleh ubah, selalunya melanggar ketekalan dalamannya. Untuk menggambarkan konsep ini, mari kita analisa coretan kod yang menghadapi pengecualian ini.

import java.util.*;

public class ConcurrentModificationExample {

    public static void main(String[] args) {
        List<String> s = new ArrayList<>();
        ListIterator<String> it = s.listIterator();

        for (String a : args)
            s.add(a);

        if (it.hasNext())
            String item = it.next();

        System.out.println(s);
    }
}
Salin selepas log masuk

Kod ini cuba melelang melalui senarai sambil menambahkan elemen padanya. Walau bagaimanapun, pengecualian dilemparkan kerana ListIterator telah dibuat sebelum elemen ditambahkan.

Untuk mengelakkan ralat ini, kita boleh mengubah suai kod seperti berikut:

import java.util.*;

public class ConcurrentModificationExample {

    public static void main(String[] args) {
        List<String> s = new ArrayList<>();

        for(String a : args)
            s.add(a);

        ListIterator<String> it = s.listIterator();    
        if(it.hasNext()) {  
            String item = it.next();   
        }  

        System.out.println(s);

    }
}
Salin selepas log masuk

Dalam kod yang disemak ini, iterator senarai dibuat selepas elemen telah ditambahkan pada senarai, memastikan konsistensi. ListIterator membenarkan pengubahsuaian senarai semasa lelaran, tetapi adalah penting bahawa ia dibuat selepas senarai dimulakan dan tidak diubah suai antara penciptaan dan penggunaan. Ini memastikan senarai kekal dalam keadaan sah sepanjang lelaran.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan ConcurrentModificationException Apabila Mengulang dan Mengubah Suai Senarai 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan