Supposons que j'ai un tableau String args[]
avec une certaine quantité d'éléments.
Disons que ça va jusqu'à args[100]
. Je veux imprimer tous les éléments de args[]
au-dessus de args[5]
. Je ne veux pas faire System.out.println(args[6] + args[7] + args[8] + args[9] + args[10]);
et ainsi de suite. Je me demande s'il existe un moyen plus propre et plus efficace d'imprimer tous ces éléments de tableau.
Merci.
Réponses
Trop de publicités?Vous avez besoin d'une boucle.
Dans votre cas, en supposant un JDK moderne, j'utiliserais stream et lambdas :
Arrays.stream(arr)
.skip(5)
.forEach(System.out::println);
Pour la boucle, probablement le plus commun, certainement dans les bases de code plus anciennes sans lambdas et streaming :
for(int i = 5; i< arr.length; i++) {
System.out.println(arr[i]);
}
Vous pouvez utiliser IntStream#range
comme indiqué ci-dessous :
IntStream.range(5, arr.length).forEach(i -> System.out.print(arr[i]));
Démonstration :
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
String arr[] = { "a", "b", "c", "d", "e", "f", "g" };
IntStream.range(2, arr.length).forEach(i -> System.out.print(arr[i]));
}
}
Sortie :
cdefg
Vous pouvez utiliser dropWhile
qui renvoie la méthode :
...un flux constitué des éléments restants de ce flux après avoir éliminé un sous-ensemble d'éléments qui correspondent au prédicat donné.
Ejemplo:
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
Arrays.stream(arr).dropWhile(i -> i != 5).forEach(System.out::print); // 56789