La longueur d'un tableau en Java est immuable. Vous devez donc copier la partie souhaitée en tant que nouveau tableau.
Utilisez la copyOfRange
méthode 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 se trouver 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)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,255)
comme au lieu de 255, je ne peux pas utiliser Integer.MAX_VALUE, au cas où je ne voudrais pas obtenir la longueur réelleendIndex
plus grand que la taille du tableau passé comme premier argument. Donc, si vous voulez une copie complète, créez une variable faisant référence à ce tableau et utilisezArrays.copyOfRange(var, 0, var.length)
ouArrays.copyOf(var, var.length)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,Short.MAX_VALUE)
ArrayIndexOutOfBoundsException
.Vous pouvez envelopper votre tableau sous forme de liste et en demander une sous-liste.
la source
Oui, vous pouvez utiliser Arrays.copyOfRange
Il fait à peu près la même chose (notez qu'il y a une copie: vous ne changez pas le tableau initial).
la source
List
et unsubList
comme indiqué dans la réponse de @ K-ballo.Tu peux essayer:
Voir javadoc pour System .
la source
Si vous utilisez Java 1.6 ou supérieur, vous pouvez utiliser
Arrays.copyOfRange
pour copier une partie du tableau. Du javadoc:Voici un exemple simple :
la source
Découvrez copyOfRange ; et exemple:
la source
Vous pouvez utiliser quelque chose comme ceci:
Arrays#copyOfRange
la source
Vous pouvez utiliser la
subList(int fromIndex, int toIndex)
méthode sur vos entiers arr, quelque chose comme ceci:Sortie sera:
2 3
.Notez que la
subList(int fromIndex, int toIndex)
méthode effectue moins 1 sur la 2ème variable qu'elle reçoit (var2 - 1), je ne sais pas exactement pourquoi, mais c'est ce qui se passe, peut-être pour réduire le risque de dépasser la taille du tableau.la source