Rumah > Java > javaTutorial > Apakah batasan kaedah Arrays.asList() Java, dan bagaimana saya boleh mengatasinya apabila menukar tatasusunan primitif kepada senarai?

Apakah batasan kaedah Arrays.asList() Java, dan bagaimana saya boleh mengatasinya apabila menukar tatasusunan primitif kepada senarai?

Linda Hamilton
Lepaskan: 2024-12-20 16:52:18
asal
792 orang telah melayarinya

What are the limitations of Java's Arrays.asList() method, and how can I overcome them when converting primitive arrays to lists?

Memahami Gelagat Arrays.asList() dan Hadnya

Apabila bekerja dengan tatasusunan dan koleksi, adalah perkara biasa untuk menukar tatasusunan menjadi senarai untuk manipulasi yang lebih mudah. Kaedah Arrays.asList() Java sering digunakan untuk tujuan ini. Walau bagaimanapun, terdapat senario tertentu di mana kaedah ini mungkin tidak berfungsi seperti yang diharapkan.

Mengapa Arrays.asList() Mengembalikan Senarai Berbeza

Pertimbangkan kod berikut:

1

2

3

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); // Works

int[] ints = {1, 2, 3, 4, 5};

List<Integer> list = Arrays.asList(ints); // Returns List<int[]>

Salin selepas log masuk

Dalam contoh pertama, Arrays.asList() mengembalikan Senaraikan mengandungi unsur integer yang ditentukan. Walau bagaimanapun, dalam contoh kedua, ia mengembalikan Senarai. Perbezaan ini berlaku kerana:

  • Arrays.asList() menerima parameter varargs, yang boleh digunakan untuk menghantar tatasusunan atau senarai elemen individu.
  • Dalam contoh pertama, kita lulus elemen integer individu, yang kaedah itu ditafsirkan sebagai objek Integer.
  • Dalam contoh kedua, kita lulus int[], yang kaedah ini dianggap sebagai objek tunggal.

Penghadan Autoboxing

Ciri autoboxing Java secara automatik menukar jenis primitif kepada jenis pembalut yang sepadan (cth., int kepada Integer) . Walau bagaimanapun, penukaran ini hanya berlaku untuk elemen individu, bukan untuk tatasusunan primitif. Oleh itu, apabila menghantar int[] kepada Arrays.asList(), autoboxing tidak berlaku dan kaedah tersebut mengembalikan Senarai.

Penyelesaian

Untuk membetulkan tingkah laku ini dan mendapatkan Senarai daripada int[], anda mempunyai tiga pilihan:

  • Gunakan Pustaka Pembantu: Pustaka seperti Guava menyediakan kaedah untuk menukar pelbagai jenis tatasusunan kepada senarai. Contohnya, com.google.common.primitive.Ints.asList() boleh digunakan untuk membuat Senarai daripada int[].
  • Buat Tatasusunan Baharu: Anda boleh mencipta Integer[] baharu yang mengandungi unsur-unsur int[] dan kemudian hantar tatasusunan itu kepada Arrays.asList() .
  • Lelaran dan Kotak: Anda boleh lelaran secara manual melalui int[], meninju setiap elemen dan menambahkannya pada Senarai.

Atas ialah kandungan terperinci Apakah batasan kaedah Arrays.asList() Java, dan bagaimana saya boleh mengatasinya apabila menukar tatasusunan primitif kepada senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan