Rumah  >  Artikel  >  Java  >  Cara membetulkan: Ralat Koleksi Java: Pengecualian operasi pengumpulan

Cara membetulkan: Ralat Koleksi Java: Pengecualian operasi pengumpulan

PHPz
PHPzasal
2023-08-19 14:21:361488semak imbas

Cara membetulkan: Ralat Koleksi Java: Pengecualian operasi pengumpulan

Cara menyelesaikan: Ralat koleksi Java: Pengecualian operasi pengumpulan

Pengenalan:
Dalam proses pembangunan Java, koleksi sering digunakan untuk menyimpan dan mengendalikan set data. Walau bagaimanapun, kadangkala kami menghadapi pengecualian operasi pengumpulan, yang boleh menyebabkan program ranap atau menghasilkan keputusan yang salah. Artikel ini akan memperkenalkan beberapa pengecualian operasi pengumpulan biasa dan menyediakan penyelesaian dan contoh kod yang sepadan.

I. Jenis dan punca pengecualian operasi pengumpulan:

  1. ConcurrentModificationException (pengecualian pengubahsuaian serentak):
    Pengecualian ini biasanya berlaku semasa proses menggunakan lelaran untuk melintasi koleksi Apabila atur cara mengulangi koleksi diubah suai. (Tambah, padam, ubah suai elemen, dll.) Pengecualian ini akan dibuang.
  2. UnsupportedOperationException (pengecualian operasi tidak disokong):
    Pengecualian ini berlaku apabila program memanggil operasi yang tidak disokong oleh koleksi, seperti mengubah suai koleksi baca sahaja.

II.

b. Gunakan kelas koleksi selamat serentak (seperti ConcurrentHashMap, CopyOnWriteArrayList) dan bukannya kelas koleksi biasa.
    c. Semasa melintasi koleksi, elakkan menambah, memadam dan mengubah suai elemen pada koleksi.


  1. Berikut ialah contoh kod mudah untuk menunjukkan penyelesaian kepada pengecualian pengubahsuaian serentak:
    List<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");
    
    Iterator<String> iterator = list.iterator();
    while(iterator.hasNext()){
        String element = iterator.next();
        if(element.equals("B")){
            iterator.remove();
        }
    }
Penyelesaian kepada pengecualian operasi yang tidak disokong:

a Sebelum menggunakan koleksi, semak dahulu sama ada koleksi menyokong operasi yang sepadan. Ia boleh dinilai melalui koleksi isAddSupported(), isRemoveSupported() dan kaedah lain.

b. Gunakan kelas pengumpulan yang menyokong operasi yang sepadan untuk menggantikan kelas pengumpulan yang tidak disokong.

  1. Berikut ialah kod sampel mudah untuk menunjukkan penyelesaian kepada pengecualian operasi yang tidak disokong:
    List<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");
    
    if(list instanceof RandomAccess){
        list.add(1, "D");
    }else{
        List<String> newList = new ArrayList<>();
        for(int i=0; i<list.size(); i++){
            if(i == 1){
               newList.add("D");
            }
            newList.add(list.get(i));
        }
        list = newList;
    }
  2. Kesimpulan:
Dalam operasi pengumpulan Java, mengelakkan pengecualian pengubahsuaian serentak dan pengecualian operasi yang tidak disokong mesti diberi perhatian semasa masalah proses pembangunan. Dengan memahami jenis dan punca pengecualian dan mengambil penyelesaian yang sepadan, kestabilan dan ketepatan program dapat dipastikan. Saya berharap penyelesaian yang disediakan dalam artikel ini dapat membantu dalam menyelesaikan masalah pengecualian operasi pengumpulan.

Atas ialah kandungan terperinci Cara membetulkan: Ralat Koleksi Java: Pengecualian operasi pengumpulan. 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