Rumah >Java >javaTutorial >Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada ArrayList Semasa Lelaran?

Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada ArrayList Semasa Lelaran?

Linda Hamilton
Linda Hamiltonasal
2024-12-17 08:25:25418semak imbas

How to Safely Remove Elements from an ArrayList During Iteration?

Mengelakkan Pengecualian Pengubahsuaian Serentak Semasa Mengalih Keluar Elemen daripada ArrayList Semasa Lelaran

Mengubah suai koleksi sambil mengulanginya menggunakan gelung for lanjutan (untuk- setiap gelung) boleh membawa kepada ConcurrentModificationException yang terkenal. Ini berlaku apabila percubaan dibuat untuk mengalih keluar elemen daripada ArrayList semasa lelaran.

Punca:

Gelung for mencipta salinan senarai secara dalaman dan berulang semula salinan ini. Apabila elemen dialih keluar daripada senarai asal, saiz salinan akan dikurangkan serta-merta, yang mengakibatkan indeks elemen semasa menjadi tidak sah.

Penyelesaian:

Untuk mengelakkan isu ini, gunakan iterator bersama-sama dengan kaedah remove().

Iterator Pendekatan:

Lelaran ialah objek yang melelaran ke atas elemen koleksi. Ia mempunyai kaedah seperti hasNext, yang menyemak sama ada terdapat lebih banyak elemen, dan seterusnya, yang mengembalikan elemen seterusnya. Menggunakan iterator membenarkan pengalihan keluar selamat semasa lelaran.

Iterator<String> iter = myArrayList.iterator();

while (iter.hasNext()) {
    String str = iter.next();

    if (someCondition)
        iter.remove();
}

Dalam pendekatan ini, iterator mengekalkan keadaan dalamannya, memastikan indeks kekal sah walaupun selepas elemen dialih keluar. Kaedah iter.remove() mengalih keluar elemen semasa daripada senarai asal dengan selamat.

Nota: Pendekatan ini lebih cekap daripada menggunakan gelung tradisional dengan indeks kerana ia tidak memerlukan mengekalkan pembolehubah indeks yang berasingan dan mengemas kininya selepas setiap pengalihan keluar.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada ArrayList 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