Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada HashMap semasa Mengulang?

DDD
Lepaskan: 2024-11-17 08:11:03
asal
823 orang telah melayarinya

How to Safely Remove Elements from a HashMap while Iterating?

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();
    }
}
Salin selepas log masuk

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!

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