Dans certains langages, Python, par exemple, on pourrait parcourir directement un tableau:
for (int i : [1, 2, 3, 4]) {
System.out.println(i);
}
Je sais que Java peut parcourir une variable de pour (type var: var2) , alors est-il possible de sauter la variable et d'itérer directement un tableau? tels que:
for i in [1, 2, 3, 4]:
print(i)
3 Réponses :
Je veux parcourir un tableau sans avoir à créer un variable.
Vous devez changer la boucle comme suit:
for (int i : new int[] {1, 2, 3, 4}) { // do something (4 iterations) }Crédit: Jacob G.
Si vous vraiment voulez éviter d'utiliser la syntaxe entre crochets, vous pouvez également faire:
Arrays.asList(1,2,3,4).forEach(System.out::println);
Ce qui fera effectivement la même chose que la création d'un Array , mais à la place, vous itérez sur une List de taille fixe .
Remarque: Cette réponse est principalement juste pour la connaissance et ne devrait pas faire cela et préférez utiliser new int [] {} plutôt que d'importer la bibliothèque Arrays et de mettre les valeurs en une List inutilement. p>
La manière la plus traditionnelle de voir asList () utilisée serait similaire à:
for (int i : Arrays.asList(1,2,3,4)) {
System.out.println(i);
}
Que sa taille soit fixe n'a pas d'importance, car vous ne pourriez rien faire pour changer sa taille même si ce n'était pas le cas (par exemple for (int i: new ArrayList <> (Arrays.asList (1,2,3, 4))) {. Notez également qu'il s'agit d'encadrer les valeurs, uniquement pour les décompresser immédiatement.
@Andy Turner Je ne recommande pas de le faire de cette façon, je le mets simplement comme alternative s'il insiste vraiment pour itérer d'une manière qui ressemble à Python. C'est bien d'apprendre que des alternatives existent même si elles ne sont pas bonnes, à mon avis.
@Andy Turner fera l'affaire.
Vous pourriez bien sûr créer l'utilitaire suivant:
IntStream.rangeClosed(1, 4)
Et puis importer statique cette méthode, en utilisant import static ArrayUtils.of code>. Vous avez maintenant une expression assez courte:
for (int i = 1; i <= 4; i++) { ... }
Je ne ferais pas cela dans un scénario réel. J'écrirais plutôt un vieux skool
for (int i : of(1, 2, 3, 4)) { ... }
ou peut-être
class ArrayUtils {
static int[] of(int... array) {
return array;
}
}
Que doit être
[1, 2, 3, 4]? Il n'y a pas de littéraux de liste en Java.pour (int i: new int [] {1, 2, 3, 4})@LutzHorn Un tableau. Dans ce cas, un tableau d'entiers. J'utilise
[1, 2, 3, 4]juste comme une démo.Vous savez à quoi ressemble un tableau en Java? Voulez-vous savoir comment un tableau est construit ou s'il existe un littéral de liste en Java comme il y en a en Python?
@JacobG. Je vois, ça a du sens, merci
@LutzHorn Je suppose que vous voulez dire
{et[Je ne comprends pas très bien. La question est de savoir ce que vous voulez dire. Quelle est ta question?
@LutzHorn Jocob l'a résolu, je veux parcourir un tableau sans avoir à créer de variable.
Vous êtes en train de créer un tableau si vous suivez le commentaire de Jacab. Vous ne l'attribuez simplement pas à un nom. Considérez une méthode qui renvoie le tableau. Vous pouvez mettre l'appel à cette méthode dans
for (int i: theMethod ()).