Rumah >Java >javaTutorial >Bagaimana untuk Mengalih keluar Elemen dengan Selamat daripada Koleksi Semasa Memulas di Java?

Bagaimana untuk Mengalih keluar Elemen dengan Selamat daripada Koleksi Semasa Memulas di Java?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 09:10:19876semak imbas

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

Mengalih keluar Elemen daripada Koleksi Semasa Mengulang

Apabila bekerja dengan koleksi, ia menjadi perlu untuk mengubah suai atau mengalih keluar elemen semasa mengulang. Walau bagaimanapun, mengubah suai koleksi semasa lelaran boleh membawa kepada ConcurrentModificationException. Untuk mengelakkan perkara ini, beberapa pendekatan wujud:

Membalas pada Salinan Koleksi

Salah satu pendekatan ialah mencipta salinan koleksi sebelum mengulang. Ini membolehkan anda mengubah suai salinan tanpa menjejaskan koleksi asal. Berikut ialah contoh:

List<Foo> fooListCopy = new ArrayList<>(fooList);
for (Foo foo : fooListCopy) {
    // Modify actual fooList
}

Menggunakan Iterator Koleksi Sebenar

Pendekatan alternatif ialah menggunakan iterator koleksi sebenar. Pendekatan ini membolehkan anda mengubah suai koleksi semasa lelaran. Berikut ialah contoh:

Iterator<Foo> itr = fooList.iterator();
while (itr.hasNext()) {
    // Modify actual fooList using itr.remove()
}

Pertimbangan untuk Memilih Pendekatan

Memilih antara pendekatan ini bergantung pada beberapa faktor:

  • Jenis Koleksi: Pendekatan pertama berfungsi dengan mana-mana Koleksi, manakala pendekatan kedua hanya berfungsi dengan koleksi yang menyokong iterator (cth., senarai, set).
  • Kebolehbacaan: Pendekatan pertama mungkin lebih mudah dibaca dan difahami, terutamanya untuk pemula.
  • Prestasi : Pendekatan kedua adalah lebih cekap kerana ia tidak memerlukan mencipta salinan koleksi.
  • Kendalian Alih Keluar Tidak Disokong: Kaedah Iterator.remove() adalah pilihan, jadi tidak semua iterator menyokong pengalihan keluar elemen. Pendekatan pertama mengelakkan isu ini dengan menggunakan kaedah Collection.removeAll() sebaliknya.

Teknik Tambahan untuk Mengalih Keluar Elemen

Selain pendekatan ini, Java 8 menawarkan beberapa teknik lain untuk mengalih keluar elemen semasa lelaran, termasuk:

  • Penyingkiran Berasaskan Strim: Menggunakan operasi strim seperti removeIf() atau filter() dengan collect().
  • ListIterator: Menggunakan ListIterator.next() untuk lelaran dan ListIterator.remove() untuk mengalih keluar elemen.
  • Sublist atau Subset: Jika koleksi diisih, mencipta subsenarai atau subset dan mengosongkannya boleh mengalih keluar elemen berturut-turut dengan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Elemen dengan Selamat daripada Koleksi Semasa Memulas di Java?. 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