Pengecualian Pengubahsuaian Serentak semasa Mengulang dan Mengalih Keluar
Apabila mengulangi HashMap sambil membuat pengubahsuaian serentak (seperti mengalih keluar elemen), ConcurrentModificationException mungkin berlaku. Ini kerana rujukan dalaman peulang kepada peta tidak sah oleh pengubahsuaian.
Penyelesaian Awal dengan ArrayList
Satu pendekatan biasa untuk mengelakkan pengecualian ini ialah mencipta salinan set kunci peta menggunakan ArrayList baharu<>(map.keySet()). Walau bagaimanapun, pendekatan ini mencipta salinan kunci yang tidak diperlukan, yang boleh menjadi tidak cekap.
Menggunakan Iterator untuk Penyingkiran
Penyelesaian yang lebih cekap ialah mengulangi entri peta menggunakan iterator, yang membolehkan kami mengalih keluar elemen dengan selamat. Kaedah entrySet() peta mengembalikan set entrinya, yang masing-masing mempunyai kaedah getKey() dan getValue().
Kod Contoh:
Map<String, String> map = new HashMap<>(); map.put("test", "test123"); map.put("test2", "test456"); for (Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); it.hasNext();) { Map.Entry<String, String> entry = it.next(); if (entry.getKey().equals("test")) { it.remove(); } }
Dalam contoh ini, kami mengulangi entri peta dan mengalih keluar kekunci "ujian" dengan selamat. Iterator mengendalikan pengubahsuaian yang diperlukan pada struktur dalaman peta, menghalang ConcurrentModificationException.
Atas ialah kandungan terperinci Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada HashMap semasa Mengulang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!