Rumah  >  Artikel  >  Java  >  Penyelesaian kepada pengecualian tidak berubah saiz koleksi Java (ImmutableSizeException)

Penyelesaian kepada pengecualian tidak berubah saiz koleksi Java (ImmutableSizeException)

PHPz
PHPzasal
2023-08-18 21:46:071103semak imbas

Penyelesaian kepada pengecualian tidak berubah saiz koleksi Java (ImmutableSizeException)

Penyelesaian kepada pengecualian saiz tidak berubah koleksi Java (ImmutableSizeException)

Apabila menggunakan koleksi Java, kadangkala anda akan menghadapi pengecualian saiz tidak berubah (ImmutableSizeException). Pengecualian ini biasanya berlaku apabila cuba mengubah suai saiz koleksi, tetapi koleksi telah dipratakrifkan sebagai tidak boleh diubah. Artikel ini akan memperkenalkan beberapa penyelesaian kepada masalah ini dan memberikan contoh kod yang sepadan.

  1. Gunakan koleksi tidak berubah
    Koleksi tidak berubah ialah koleksi yang tidak boleh diubah suai setelah dibuat. Terdapat beberapa perpustakaan di Java yang menyediakan pelaksanaan koleksi tidak berubah, seperti Guava's ImmutableList dan ImmutableSet. Menggunakan koleksi tidak berubah ini mengelakkan masalah mengubah suai saiz koleksi.
import com.google.common.collect.ImmutableList;

public class ImmutableCollectionExample {
    public static void main(String[] args) {
        ImmutableList<String> names = ImmutableList.of("Alice", "Bob", "Charlie");
        // 尝试修改集合大小,将会抛出UnsupportedOperationException异常
        names.add("David");
    }
}
  1. Buat salinan dan kendalikan padanya
    Jika anda mesti mengubah suai saiz koleksi, satu penyelesaian ialah mencipta salinan koleksi, mengendalikan salinan, dan kemudian menyerahkan hasilnya kepada koleksi asal. Ini mengelakkan pengubahsuaian terus koleksi tidak berubah.
import java.util.ArrayList;
import java.util.List;

public class CopyCollectionExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        // 创建副本进行操作
        List<String> updatedNames = new ArrayList<>(names);
        updatedNames.add("David");

        // 将结果赋值给原始集合
        names = updatedNames;
    }
}
  1. Gunakan koleksi boleh ubah
    Jika anda perlu mengubah suai saiz koleksi dengan kerap, anda boleh mempertimbangkan untuk menggunakan koleksi boleh ubah, seperti ArrayList. Saiz koleksi boleh ubah boleh diubah suai, tetapi perhatian perlu diberikan kepada isu penyegerakan dalam persekitaran berbilang benang.
import java.util.ArrayList;
import java.util.List;

public class MutableCollectionExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        // 修改集合大小
        names.add("David");
    }
}

Tidak kira penyelesaian yang anda pilih, ia harus diputuskan berdasarkan keperluan dan senario khusus anda. Jika anda hanya perlu membaca data pengumpulan tanpa mengubah suainya, koleksi tidak berubah adalah pilihan yang lebih baik. Jika saiz koleksi perlu ditukar dengan kerap, koleksi boleh ubah adalah lebih mudah. Di samping itu, kita juga mesti memberi perhatian kepada operasi koleksi dalam persekitaran berbilang benang untuk memastikan keselamatan benang.

Ringkasan:

  • Menggunakan koleksi tidak berubah, seperti Guava's ImmutableList dan ImmutableSet, boleh mengelakkan masalah mengubah suai saiz koleksi
  • Buat salinan untuk operasi dan tetapkan hasilnya kepada koleksi asal, yang boleh menyelesaikan masalah; masalah koleksi tidak berubah yang mengalami masalah saiz.
  • Melalui penyelesaian di atas, anda boleh menyelesaikan masalah pengecualian tidak berubah saiz koleksi Java (ImmutableSizeException) dengan berkesan dan meningkatkan kebolehpercayaan dan kestabilan program.

Atas ialah kandungan terperinci Penyelesaian kepada pengecualian tidak berubah saiz koleksi Java (ImmutableSizeException). 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