323 votes

obtenir qu'une partie d'un tableau en Java?

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.

523voto

Elias Points 2409

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)
 

37voto

K-ballo Points 44794

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);
 

24voto

dystroy Points 145126

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).

8voto

Justin Ethier Points 57486

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.lengthinclus. La valeur en original[from] est placé dans l'élément de départ de la copie (à moins de from == original.length ou from == 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 cas false 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é sera to - 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]);
    }

}

3voto

dcp Points 26928

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X