Rumah >Java >javaTutorial >Ralat Java: Ralat penggabungan tatasusunan, cara menyelesaikan dan mengelak
Ralat Java: Ralat Penggabungan Array, Cara Menyelesaikan dan Elakkan
Dalam pengaturcaraan Java, tatasusunan ialah struktur data yang kerap digunakan. Apabila anda perlu menggabungkan dua atau lebih tatasusunan, anda perlu menggunakan kaedah penggabungan tatasusunan yang disediakan oleh Java. Walau bagaimanapun, semasa proses penggabungan tatasusunan, beberapa ralat mungkin berlaku. Artikel ini akan memperkenalkan ralat dan penyelesaian penggabungan tatasusunan Java biasa, dan memberikan beberapa cadangan untuk mengelakkan ralat ini.
Ralat biasa:
Apabila panjang dua tatasusunan yang hendak dicantumkan tidak konsisten, ralat akan berlaku menggunakan kaedah penggabungan tatasusunan yang disediakan oleh Java. Contohnya:
int[] arr1 = {1, 2, 3}; int[] arr2 = {4, 5}; int[] arr3 = Arrays.copyOf(arr1, arr1.length + arr2.length); System.arraycopy(arr2, 0, arr3, arr1.length, arr2.length);
Dalam contoh ini, array arr1 mempunyai panjang 3 dan array arr2 mempunyai panjang 2, cuba menggabungkannya dengan menyalinnya ke dalam array arr3 dengan panjang 5. Walau bagaimanapun, kerana panjang arr3 hanya boleh ditakrifkan dengan jumlah panjang arr1 dan arr2, cantuman tatasusunan gagal.
Di Jawa, hanya tatasusunan jenis yang sama boleh digabungkan. Jika jenis elemen dua tatasusunan berbeza, Java akan membuang UnsupportedOperationException. Contohnya:
String[] strArr = {"a", "b", "c"}; int[] intArr = {1, 2, 3}; Object[] objArr = ArrayUtils.addAll(strArr, intArr);
Dalam contoh ini, anda cuba menggabungkan tatasusunan jenis String dan tatasusunan jenis int ke dalam tatasusunan jenis Objek. Memandangkan jenis String dan int tidak serasi, Java akan membuang UnsupportedOperationException.
Penyelesaian:
Sebelum menggabungkan tatasusunan, anda boleh menggunakan formula pengiraan panjang tatasusunan untuk mengira panjang tatasusunan sasaran yang akan dibuat. Sebagai contoh, apabila menggabungkan dua tatasusunan panjang n dan m, panjang tatasusunan destinasi hendaklah n+m. Kemudian, gunakan kaedah System.arraycopy() untuk menyalin dua tatasusunan ke dalam tatasusunan sasaran. Contohnya:
int[] arr1 = {1, 2, 3}; int[] arr2 = {4, 5}; int[] arr3 = new int[arr1.length + arr2.length]; System.arraycopy(arr1, 0, arr3, 0, arr1.length); System.arraycopy(arr2, 0, arr3, arr1.length, arr2.length);
Dalam contoh ini, panjang arr3 ialah jumlah panjang arr1 dan arr2 Mula-mula buat tatasusunan dengan panjang 5, dan kemudian salin masing-masing elemen arr1 dan arr2 digabungkan dengan jayanya.
Anda boleh menggunakan generik untuk menyelesaikan isu ketidakserasian jenis tatasusunan. Buat tatasusunan jenis Objek, tukar tatasusunan untuk digabungkan menjadi Objek jenis, dan kemudian gunakan kaedah Arrays.copyOf() untuk menggabungkannya. Contohnya:
String[] strArr = {"a", "b", "c"}; Integer[] intArr = {1, 2, 3}; Object[] objArr = new Object[strArr.length + intArr.length]; System.arraycopy(strArr, 0, objArr, 0, strArr.length); System.arraycopy(intArr, 0, objArr, strArr.length, intArr.length);
Dalam contoh ini, mula-mula buat tatasusunan Objek dengan panjang 6, dan kemudian salin strArr dan intArr ke objArr masing-masing. Memandangkan Object ialah kelas induk bagi semua kelas Java, semua jenis tatasusunan boleh ditukar kepada jenis Objek untuk mencapai penggabungan tatasusunan.
Nasihat untuk mengelakkan kesilapan:
Tatasusunan berbilang dimensi meningkatkan kerumitan proses penggabungan tatasusunan dengan ketara. Anda harus cuba mengelak daripada mencipta tatasusunan berbilang dimensi dan sebaliknya menggunakan tatasusunan satu dimensi atau gunakan Senarai daripada rangka kerja koleksi Java.
Tatasusunan ialah struktur data intensif memori dan jika anda menggabungkan terlalu banyak tatasusunan, anda mungkin kehabisan memori. Penggunaan ingatan harus dirancang dengan sewajarnya untuk senario aplikasi tertentu untuk mengelakkan terlalu banyak memori.
Hendaklah mengikut piawaian pengekodan Java, termasuk nama pembolehubah yang bermakna dan boleh dibaca, komen dan format kod, dsb. Ini boleh menjadikan kod lebih mudah difahami dan diselenggara.
Kesimpulan:
Di Java, tatasusunan ialah struktur data yang penting dan juga tempat ralat berlaku. Jika anda perlu menggabungkan tatasusunan, penjagaan mesti diambil untuk mengelakkan ralat seperti panjang tatasusunan yang tidak konsisten atau jenis tatasusunan yang tidak serasi. Dalam pengaturcaraan sebenar, anda harus mengikut piawaian pengekodan Java dan menggunakan penyelesaian di atas untuk mengelakkan dan menyelesaikan ralat penggabungan tatasusunan.
Atas ialah kandungan terperinci Ralat Java: Ralat penggabungan tatasusunan, cara menyelesaikan dan mengelak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!