Saya memiliki array Integer di Jawa, saya hanya ingin menggunakan sebagian saja. Saya tahu dengan Python Anda bisa melakukan sesuatu seperti array [index:] ini dan mengembalikan array dari indeks. Apakah hal seperti ini dimungkinkan di Jawa.
Saya memiliki array Integer di Jawa, saya hanya ingin menggunakan sebagian saja. Saya tahu dengan Python Anda bisa melakukan sesuatu seperti array [index:] ini dan mengembalikan array dari indeks. Apakah hal seperti ini dimungkinkan di Jawa.
Jawaban:
Panjang array di Java tidak dapat diubah. Jadi, Anda perlu menyalin bagian yang diinginkan sebagai array baru.
Gunakan copyOfRangemetode 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)
endIndexlebih besar dari ukuran array yang dilewati sebagai argumen pertama. Jadi, jika Anda ingin salinan lengkap, buat variabel yang merujuk ke array ini dan gunakan Arrays.copyOfRange(var, 0, var.length)atauArrays.copyOf(var, var.length)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,Short.MAX_VALUE)
ArrayIndexOutOfBoundsException.
Ya, Anda bisa menggunakannya Arrays.copyOfRange
Itu melakukan hal yang sama (perhatikan ada salinan: Anda tidak mengubah array awal).
Listdan a subListseperti diuraikan dalam jawaban @ K-ballo.
Anda dapat mencoba:
System.arraycopy(sourceArray, 0, targetArray, 0, targetArray.length);// copies whole array
// copies elements 1 and 2 from sourceArray to targetArray
System.arraycopy(sourceArray, 1, targetArray, 0, 2);
Lihat javadoc untuk Sistem .
Jika Anda menggunakan Java 1.6 atau lebih tinggi, Anda bisa menggunakannya Arrays.copyOfRangeuntuk menyalin sebagian array. Dari javadoc:
Menyalin kisaran yang ditentukan dari array yang ditentukan ke dalam array yang baru. Indeks awal rentang (dari) harus berada di antara nol dan
original.length, inklusif. Nilai atoriginal[from]ditempatkan pada elemen awal salinan (kecualifrom == original.lengthataufrom == to). Nilai dari elemen berikutnya dalam array asli ditempatkan ke elemen berikutnya dalam salinan. Indeks akhir rentang (to), yang harus lebih besar dari atau sama denganfrom, mungkin lebih besar darioriginal.length, dalam halfalseini ditempatkan di semua elemen salinan yang indeksnya lebih besar dari atau sama denganoriginal.length - from. Panjang array yang dikembalikan akan menjadito - from.
Ini adalah contoh sederhana :
/**
* @Program that Copies the specified range of the specified array into a new
* array.
* CopyofRange8Array.java
* Author:-RoseIndia Team
* Date:-15-May-2008
*/
import java.util.*;
public class CopyofRange8Array {
public static void main(String[] args) {
//creating a short array
Object T[]={"Rose","India","Net","Limited","Rohini"};
// //Copies the specified short array upto specified range,
Object T1[] = Arrays.copyOfRange(T, 1,5);
for (int i = 0; i < T1.length; i++)
//Displaying the Copied short array upto specified range
System.out.println(T1[i]);
}
}
Lihat copyOfRange ; dan contoh:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
Anda dapat menggunakan sesuatu seperti ini: Arrays#copyOfRange
Anda dapat menggunakan subList(int fromIndex, int toIndex)metode pada bilangan bulat arr Anda, sesuatu seperti ini:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(3);
arr.add(4);
List<Integer> partialArr = arr.subList(1, 3);
// print the subArr
for (Integer i: partialArr)
System.out.println(i + " ");
}
}
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.
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 sebenarnya