Kata pengantar:
Artikel ini memperkenalkan perbandingan kelebihan dan kekurangan dari tiga situasi mengubah array ke dalam daftar di Java, serta perbandingan skenario aplikasi, dan analisis penyebab kesalahan konversi jenis yang sering dilakukan oleh programmer.
1. Cara paling umum (belum tentu yang terbaik)
Setelah mengubah array menjadi daftar melalui Arrays.asList(strArray) , Anda tidak dapat menambahkan atau menghapus daftar. Anda hanya dapat memeriksa dan memodifikasinya, jika tidak, pengecualian akan dilemparkan.
Kode Kunci: List list = Arrays.asList(strArray);
private void testarRaycastTolisterror () {string [] strarray = string baru [2]; Daftar daftar = arrays.aslist (Strarray); // Masukkan data ke daftar daftar yang dikonversi. ("1"); System.out.println (daftar); }Hasil Eksekusi:
Pengecualian di Thread "Main" Java.lang.unsupportedOperationException
di java.util.abstractlist.add (abstractlist.java:148)
di java.util.abstractlist.add (abstractlist.java:108)
di com.darwin.junit.calculator.tesararraycasttolist (calculator.java:19)
di com.darwin.junit.calculator.main (calculator.java:44)
Program ini melempar pengecualian di list.add(“1”) . UnsupportedOperationException.
Analisis Alasan:
Nilai pengembalian Arrays.asList(strArray) adalah kelas bagian dalam privat java.util.Arrays kelas java.util.Arrays.ArrayList , yang bukan kelas java.util.ArrayList . Kelas java.util.Arrays.ArrayList memiliki set() , get() , contains() dan metode lainnya, tetapi tidak memiliki metode menambahkan add() atau menghapus remove() , sehingga memanggil add() akan menyebabkan kesalahan.
Skenario Penggunaan: Metode Arrays.asList(strArray) hanya dapat digunakan setelah mengonversi array ke daftar. Tidak perlu menambah atau menghapus nilai di dalamnya, dan hanya digunakan sebagai sumber data untuk dibaca.
2. Setelah array dikonversi ke daftar, ia mendukung metode penambahan, menghapus, memodifikasi dan mencari.
Melalui konstruktor ArrayList, konversi nilai pengembalian Arrays.asList(strArray) dari java.util.Arrays.ArrayList ke java.util.ArrayList .
Kode Kunci: ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
private void testarraycastTolistright () {string [] strarray = string baru [2]; ArrayList <String> list = ArrayList baru <string> (arrays.aslist (strarray)); list.add ("1"); System.out.println (daftar); }Hasil eksekusi: elemen "1" berhasil ditambahkan.
[NULL, NULL, 1]
Skenario Penggunaan: Setelah mengubah array menjadi daftar, Anda perlu menambahkan, menghapus, memodifikasi, dan memeriksa daftar. Ini dapat digunakan jika jumlah data dalam daftar tidak besar.
3. Melalui metode Collection Class Class.addall () (paling efisien)
Konversi melalui Collections.addAll(arrayList, strArray) , buat daftar panjang yang sama sesuai dengan panjang array, dan kemudian mengubah elemen dalam array menjadi biner melalui metode Collections.addAll() , dan kemudian menambahkannya ke daftar. Ini adalah metode yang paling efisien.
Kode Kunci:
ArrayList <String> arrayList = ArrayList baru <string> (strarray.length); collections.addall (arraylist, strarray);
tes:
private void testarraycasttolisteficient () {string [] strarray = string baru [2]; ArrayList <String> arrayList = ArrayList baru <string> (strarray.length); Collections.addall (arraylist, strarray); arraylist.add ("1"); System.out.println (ArrayList); }Hasil Eksekusi: Juga berhasil menambahkan elemen "1".
[NULL, NULL, 1]
Skenario Penggunaan: Setelah mengubah array menjadi daftar, Anda perlu menambahkan, menghapus, memodifikasi, dan memeriksa daftar. Ketika volume data daftar sangat besar, lebih disukai menggunakannya, yang dapat meningkatkan kecepatan operasi.
Catatan: Lampirkan kode sumber dari Collections.addAll() metode:
public static <T> boolean addall (koleksi <? super t> c, t ... elemen) {boolean hasil = false; untuk (elemen t: elemen) hasil | = c.add (elemen); // hasil dan c.add (elemen) bitwise atau operasi, dan kemudian tetapkan nilai ke hasil hasil pengembalian; }Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.