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

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

Susan Sarandon
Susan Sarandonasal
2024-11-17 01:46:03570semak imbas

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()))

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();
    }
}

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!

Kenyataan:
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