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!