J'ai un tableau d'entiers en Java, j'aimerais n'en utiliser qu'une partie. Je sais qu'en Python, vous pouvez faire quelque chose comme ce tableau [index:] et il retourne le tableau à partir de l'index. Est-ce que quelque chose comme ceci est possible en Java.
Utilisez la méthode copyOfRange
de Java.util.Arrays class:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndex est l'index initial de la plage à copier, inclus.
endIndex est l'index final de la plage à copier, exclusif. (Cet index peut être en dehors du tableau)
Par exemple.:
//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)
Vous pouvez envelopper votre tableau sous forme de liste et demander une sous-liste.
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
Oui, vous pouvez utiliser Arrays.copyOfRange
C'est à peu près la même chose (notez qu'il y a une copie: vous ne changez pas le tableau initial).
Si vous utilisez Java 1.6 ou une version ultérieure, vous pouvez utiliser Arrays.copyOfRange
pour copier une partie du tableau. Du javadoc:
Copie la plage spécifiée du tableau spécifié dans un nouveau tableau. L'index initial de la plage (from) doit être compris entre zéro et
original.length
inclus. La valeur àoriginal[from]
est placée dans l'élément initial de la copie (sauf sifrom == original.length
oufrom == to
). Les valeurs des éléments suivants du tableau d'origine sont placées dans les éléments suivants de la copie. L'indice final de la plage (to
), qui doit être supérieur ou égal àfrom
, peut être supérieur àoriginal.length
, auquel casfalse
est placé dans tous les éléments de la copie dont l'indice est supérieur ou égal àoriginal.length - from
. La longueur du tableau retourné serato - from
.
Voici un exemple simple :
/**
* @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]);
}
}
Tu peux essayer:
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);
Voir javadoc pour System .
Vérifier copyOfRange ; et exemple:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
Vous pouvez utiliser quelque chose comme ceci: Arrays#copyOfRange
Arrays.copyOfRange (tableau, de, à);
Le paramètre d'entrée "to" est inclusif. dans votre code, ajoutez un 'à' + 1 pour résoudre votre problème.