Rumah > Java > javaTutorial > Bagaimana untuk Mengeluarkan Elemen dengan Selamat daripada Koleksi Java Semasa Mengulang?

Bagaimana untuk Mengeluarkan Elemen dengan Selamat daripada Koleksi Java Semasa Mengulang?

DDD
Lepaskan: 2024-12-21 01:02:13
asal
133 orang telah melayarinya

How to Safely Remove Elements from a Java Collection While Iterating?

Mengalih Keluar Elemen dengan Selamat semasa Lelaran dalam Java

S: Adakah dibenarkan untuk mengalih keluar elemen daripada koleksi sambil mengulanginya menggunakan gelung foreach di Jawa?

J: Menggunakan gelung foreach untuk dialih keluar bukan dinasihatkan. Ia boleh mengakibatkan tingkah laku yang tidak dijangka kerana lelaran asas tidak terdedah dan boleh diakses secara langsung untuk pengubahsuaian.

Contoh:

List<String> names = ....
for (String name : names) {
   // Do something
   names.remove(name).
}
Salin selepas log masuk

Kod ini mungkin gagal dengan java.util .ConcurrentModificationException kerana operasi alih keluar mengubah suai koleksi di bawah semasa gelung foreach berada dalam kemajuan.

S: Bolehkah kami mengalih keluar item yang belum diulang lagi?

J: Tidak. Mengalih keluar elemen yang belum diproses dalam gelung boleh membawa kepada ralat "indeks di luar sempadan". Contoh:

//Assume that the names list as duplicate entries
List<String> names = ....
for (String name : names) {
    // Do something
    while (names.remove(name));
}
Salin selepas log masuk

Untuk mengalih keluar elemen dengan selamat semasa melelaran, Iterator harus digunakan:

List<String> names = ....
Iterator<String> i = names.iterator();
while (i.hasNext()) {
   String s = i.next(); // must be called before you can call i.remove()
   // Do something
   i.remove();
}
Salin selepas log masuk

Dokumentasi Java menekankan bahawa iterator yang dikembalikan oleh iterator dan kaedah listIterator adalah "gagal- cepat." Sebarang pengubahsuaian struktur pada senarai di luar kaedah alih keluar atau tambah iterator akan menghasilkan ConcurrentModificationException.

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Elemen dengan Selamat daripada Koleksi Java 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