Rumah > Java > javaTutorial > Bagaimana untuk Mengalih Keluar Elemen dengan Selamat dari Peta Semasa Lelaran?

Bagaimana untuk Mengalih Keluar Elemen dengan Selamat dari Peta Semasa Lelaran?

Susan Sarandon
Lepaskan: 2024-11-17 01:46:03
asal
650 orang telah melayarinya

How to Safely Remove Elements from a Map During Iteration?

Mengulang dan Mengalih Keluar Elemen daripada Peta: Menyelesaikan Pengecualian Pengubahsuaian Serentak

Meletup pada peta dan mengalih keluar elemennya boleh membawa kepada ConcurrentModificationException . Pengecualian ini berlaku apabila Koleksi Java diubah suai semasa lelaran, mewujudkan keadaan tidak segerak antara iterator dan koleksi asas.

Untuk mengelakkan pengecualian ini, satu pendekatan biasa ialah mencipta salinan set kekunci sebelum mengulanginya. Dalam kod anda, baris berikut mencapai ini:

for (Object key : new ArrayList<Object>(map.keySet()))
Salin selepas log masuk

Pendekatan ini berkesan, tetapi mungkin terdapat penyelesaian yang lebih cekap.

Menggunakan Iterator untuk Mengalih Keluar Entri

Rangka Kerja Koleksi Java menyediakan lelaran yang membenarkan pengalihan keluar elemen dengan selamat semasa lelaran. Contoh kod berikut menunjukkan cara menggunakan iterator untuk mengalih keluar masukan dengan kunci "ujian" daripada peta:

Map<String, String> map = new HashMap<String, String>() {
  {
    put("test", "test123");
    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

Penyelesaian ini menggunakan kaedah remove() iterator, yang mengalih keluar masukan semasa dengan selamat daripada peta itu. Pendekatan ini mengelakkan keperluan untuk mencipta salinan berasingan set kunci dan secara amnya lebih cekap, terutamanya untuk peta besar.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih Keluar Elemen dengan Selamat dari Peta Semasa Lelaran?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan