Rumah >Java >javaTutorial >Bagaimana untuk Mengelakkan ConcurrentModificationException Apabila Mengalih Keluar Elemen daripada Koleksi Semasa Lelaran?
Mengelakkan ConcurrentModificationException semasa Mengalih keluar Elemen Koleksi semasa Lelaran
Pengenalan
Mengubah suai koleksi sambil serentak lelaran melaluinya boleh mengakibatkan tingkah laku yang tidak dijangka, termasuk a ConcurrentModificationException. Untuk mengelakkan isu ini, pendekatan yang berbeza boleh digunakan.
Pendekatan 1: Mengulangi Salinan Koleksi
Satu kaedah ialah membuat salinan koleksi dan mengulangi salinan itu bukannya koleksi asal. Ini memastikan bahawa koleksi asal tidak diubah suai semasa lelaran.
Contoh:
List<Foo> fooListCopy = new ArrayList<>(fooList); for (Foo foo : fooListCopy) { // Modify the actual fooList }
Pendekatan 2: Menggunakan Lelaran Koleksi
Pendekatan lain ialah menggunakan iterator yang disediakan oleh koleksi asal. Peulang menyediakan cara yang selamat untuk melintasi koleksi dan mengalih keluar elemen semasa mengulang.
Contoh:
Iterator<Foo> itr = fooList.iterator(); while (itr.hasNext()) { // Modify the actual fooList using itr.remove() }
Pendekatan Alternatif dengan JDK 8 atau Lebih Tinggi
Pertimbangan untuk Pemilihan
Pendekatan terbaik bergantung pada senario tertentu:
Pertimbangan tambahan termasuk:
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan ConcurrentModificationException Apabila Mengalih Keluar Elemen daripada Koleksi Semasa Lelaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!