Ich habe ein Array von Integer-Werten in Java, ich möchte nur einen Teil davon verwenden. Ich weiß, dass Sie in Python so etwas wie dieses Array [index:] tun können, und es gibt das Array aus dem Index zurück. Ist so etwas in Java möglich.
Verwenden Sie die copyOfRange
-Methode aus Java.util.Arrays class:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndex ist der Anfangsindex des zu kopierenden Bereichs, einschließlich.
endIndex ist der endgültige Index des zu kopierenden Bereichs, exklusiv. (Dieser Index kann außerhalb des Arrays liegen)
Z.B.:
//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)
Sie können Ihr Array als Liste einschließen und eine Unterliste davon anfordern.
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
Ja, Sie können Arrays.copyOfRange verwenden.
Es macht ungefähr dasselbe (beachten Sie, dass es eine Kopie gibt: Sie ändern das ursprüngliche Array nicht).
Wenn Sie Java 1.6 oder höher verwenden, können Sie Arrays.copyOfRange
verwenden, um einen Teil des Arrays zu kopieren. Aus dem Javadoc:
Kopiert den angegebenen Bereich des angegebenen Arrays in ein neues Array. Der Anfangsindex des Bereichs (von) muss zwischen Null und _
original.length
_ einschließlich liegen. Der Wert bei _original[from]
_ wird in das Anfangselement der Kopie eingefügt (es sei denn, _from == original.length
_ oder _from == to
_). Werte von nachfolgenden Elementen im ursprünglichen Array werden in nachfolgende Elemente in der Kopie eingefügt. Der letzte Index des Bereichs (to
), der größer oder gleichfrom
sein muss, kann größer als _original.length
_ sein. In diesem Fall wirdfalse
gesetzt Elemente der Kopie, deren Index größer oder gleich _original.length - from
_ ist. Die Länge des zurückgegebenen Arrays ist _to - from
_.
Hier ist ein einfaches Beispiel :
_/**
* @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]);
}
}
_
Du kannst es versuchen:
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);
Siehe javadoc für System .
Check out copyOfRange ; und Beispiel:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
Sie können so etwas verwenden: Arrays#copyOfRange
Arrays.copyOfRange (Array, von, bis);
Der Eingabeparameter 'bis' ist inklusive. Fügen Sie daher in Ihrem Code einen 'to' + 1-Wert hinzu, um Ihr Problem zu beheben.