Panjang array di Java tidak dapat diubah. Jadi, Anda perlu menyalin bagian yang diinginkan sebagai array baru.
Gunakan copyOfRange
metode dari kelas java.util.Arrays :
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndex adalah indeks awal rentang yang akan disalin, inklusif.
endIndex adalah indeks akhir dari rentang yang akan disalin, eksklusif. (Indeks ini mungkin berada di luar array)
Misalnya:
//index 0 1 2 3 4
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2); // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4); // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,255)
karena alih-alih 255 saya tidak bisa menggunakan Integer.MAX_VALUE, kalau-kalau saya tidak ingin mendapatkan panjang sebenarnyaendIndex
lebih besar dari ukuran array yang dilewati sebagai argumen pertama. Jadi, jika Anda ingin salinan lengkap, buat variabel yang merujuk ke array ini dan gunakanArrays.copyOfRange(var, 0, var.length)
atauArrays.copyOf(var, var.length)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,Short.MAX_VALUE)
ArrayIndexOutOfBoundsException
.Anda bisa membungkus array Anda sebagai daftar, dan meminta sublist dari itu.
sumber
Ya, Anda bisa menggunakannya Arrays.copyOfRange
Itu melakukan hal yang sama (perhatikan ada salinan: Anda tidak mengubah array awal).
sumber
List
dan asubList
seperti diuraikan dalam jawaban @ K-ballo.Anda dapat mencoba:
Lihat javadoc untuk Sistem .
sumber
Jika Anda menggunakan Java 1.6 atau lebih tinggi, Anda bisa menggunakannya
Arrays.copyOfRange
untuk menyalin sebagian array. Dari javadoc:Ini adalah contoh sederhana :
sumber
Lihat copyOfRange ; dan contoh:
sumber
Anda dapat menggunakan sesuatu seperti ini:
Arrays#copyOfRange
sumber
Anda dapat menggunakan
subList(int fromIndex, int toIndex)
metode pada bilangan bulat arr Anda, sesuatu seperti ini:Output akan menjadi:
2 3
.Perhatikan bahwa
subList(int fromIndex, int toIndex)
metode melakukan minus 1 pada variabel ke-2 yang diterimanya (var2 - 1), saya tidak tahu persis mengapa, tapi itulah yang terjadi, mungkin untuk mengurangi kemungkinan melebihi ukuran array.sumber