CodeGym/Blog Java/Random-FR/Boucle for-each en Java
Auteur
Artem Divertitto
Senior Android Developer at United Tech

Boucle for-each en Java

Publié dans le groupe Random-FR
membres

Qu'est-ce qu'une boucle for-each ?

Un for-each est une sorte de boucle for que vous utilisez lorsque vous devez traiter tous les éléments d'un tableau ou d'une collection. Cela dit, l'expression for-each n'est pas réellement utilisée dans cette boucle. Sa syntaxe est la suivante :
for (type itVar : array)
{
    // Operations
}
type est le type de la variable d'itérateur (qui correspond au type de données des éléments du tableau !), itVar est son nom et array est un tableau (d'autres structures de données sont également autorisées, par exemple, une sorte de collection, comme ArrayList ), c'est-à-dire l'objet sur lequel la boucle est exécutée. Comme vous pouvez le voir, cette construction n'utilise pas de compteur : la variable d'itérateur itère simplement sur les éléments du tableau ou de la collection. Lorsqu'une telle boucle est exécutée, la variable d'itérateur reçoit séquentiellement la valeur de chaque élément du tableau ou de la collection, après quoi le bloc d'instructions (ou instruction) spécifié est exécuté.

En plus de la boucle for-each, Java possède également une méthode forEach(). Vous pouvez lire à ce sujet dans l'article intitulé "Arrêtez les boucles d'écriture !" Top 10 des meilleures pratiques pour travailler avec des collections dans Java 8

Note:une boucle for-each peut être appliquée aux tableaux et à toutes les classes qui implémentent l' interface java.lang.Iterable . La boucle for suivante serait équivalente au code ci-dessus :
for (int i=0; i < array.length; i++)
{

    // Statements
}

Exemple de boucle for-each

Nous créons un tableau des scores des étudiants. Ensuite, nous utilisons une boucle for-each pour imprimer toutes les estimations, calculer le score moyen et trouver le meilleur score.
public class ForEachTest {

// A method that prints all scores
public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int num : scores) {

            System.out.print(num + "|");
        }
        System.out.println();
    }

// A method that displays the average score

public static double getAverageScore(int[] numbers) {
        int totalScore = 0;

        for (int num : numbers) {
            totalScore = num + totalScore;
        }
        return ((double) totalScore / numbers.length);

    }
// A method that determines the best (maximum) score
    public static int getBestScore(int[] numbers) {
        int maxScore = numbers[0];

        for (int num : numbers) {
            if (num > maxScore) {
                maxScore = num;
            }
        }
        return maxScore;
    }

public static void main(String[] args) {

// Array of scores
int[] scores = {5, 10, 7, 8, 9, 9, 10, 12};


  int bestScore = getBestScore(scores);
        System.out.print("All the scores: ");
        printAllScores(scores);
        System.out.println("The highest score is " + bestScore);
        System.out.println("The average score is " + getAverageScore(scores));
    }

}
Sortie du programme:
All the scores: |5|10|7|8|9|9|10|12|
The highest score is 12
The average score is 8.75
Voyons maintenant à quoi ressemblerait une méthode pour afficher toutes les partitions si nous utilisions une boucle for ordinaire:
public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int i = 0; i < scores.length; i++) {

            System.out.print(scores[i] + "|");
        }
        System.out.println();
    }
Si nous appelons cette méthode depuis la méthode principale , nous obtenons ce résultat :
All the scores: |5|10|7|8|9|9|10|12|

Exemple de boucle for-each avec des collections

Nous créons une collection de noms et affichons tous les noms à l'écran.
List<String> names = new ArrayList<>();
        names.add("Snoopy");
        names.add("Charlie");
        names.add("Linus");
        names.add("Shroeder");
        names.add("Woodstock");

        for(String name : names){
            System.out.println(name);
        }

Limitations d'une boucle for-each

La forme compacte de la boucle for-each est considérée comme plus facile à lire qu'une boucle for , et il est recommandé d'utiliser une boucle for-each dans la mesure du possible. Cependant, une boucle for-each est une construction moins universelle qu'une boucle for ordinaire. Voici quelques cas simples où une boucle for-each ne fonctionnera pas du tout ou fonctionnera, mais seulement avec difficulté.
  1. Si vous voulez parcourir une boucle de la fin au début. C'est-à-dire qu'il n'y a pas de boucle for-each qui soit directement analogue au code suivant :

    for (int i= array.length-1; i>0; i--)
    {
          System.out.println(array[i]);
    }
  2. For-each ne convient pas si vous souhaitez apporter des modifications à un tableau. Par exemple, vous ne pouvez pas trier un tableau sans modifier l'emplacement de ses éléments. De plus, dans le code suivant, seule la variable d'itérateur changera, pas l'élément du tableau :

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. Si vous recherchez un élément dans un tableau et que vous devez renvoyer (ou transmettre) l'index de l'élément que vous recherchez, il est préférable d'utiliser une boucle for ordinaire .

Une vidéo utile sur la boucle for-each

Boucles dans le cours CodeGym

Sur CodeGym, nous commençons à pratiquer l'utilisation des boucles au niveau 4 de la quête Java Syntax . Plusieurs des leçons de ce niveau, ainsi que de nombreuses tâches de différents niveaux, sont consacrées aux boucles afin de renforcer vos compétences pour travailler avec elles. Fondamentalement, il n'y a aucun moyen d'y échapper - les boucles sont l'une des constructions les plus importantes de la programmation.

Plus d'informations sur les boucles for-each et autres

  1. L'instruction while . L'article traite du type de boucle le plus simple : la whileboucle, que CodeGym utilise pour présenter les boucles aux élèves.
  2. Arrêtez d'écrire des boucles ! Top 10 des meilleures pratiques pour travailler avec des collections dans Java 8 . Cet article aidera les étudiants CodeGym qui sont au moins à la moitié du cours à apprendre de nombreuses choses intéressantes sur le travail avec les collections.
Commentaires
  • Populaires
  • Nouveau
  • Anciennes
Tu dois être connecté(e) pour laisser un commentaire
Cette page ne comporte pas encore de commentaires