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.
Réponses
Trop de publicités? Utilisez la méthode copyOfRange
de la classe java.util.Arrays :
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)
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 supérieure, vous pouvez utiliser Arrays.copyOfRange
copier une partie de la matrice. À partir de la javadoc:
Des Copies de la plage spécifiée au tableau spécifié dans une nouvelle matrice. L'initiale de l'index de la gamme (à partir de) doit se situer entre zéro et
original.length
inclus. La valeur enoriginal[from]
est placé dans l'élément de départ de la copie (à moins defrom == original.length
oufrom == to
). Les valeurs à partir de la suite des éléments dans le tableau d'origine sont placés dans des éléments suivants lors de la copie. L'indice final de la gamme (to
), qui doit être supérieur ou égal àfrom
, peut être supérieure àoriginal.length
, auquel casfalse
est placé dans tous les éléments de la copie dont l'index 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]);
}
}
Consultez copyOfRange: http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#copyOfRange%28boolean[* , %20int,%20int%29