/ / Enhanced pour les boucles - java, foreach

Amélioré pour les boucles - java, foreach

Donc, je regarde un de mes exemples en javacours et au lieu d’utiliser une boucle for régulière, une boucle for améliorée a été utilisée. J’ai essayé de revenir à une boucle normale, mais j’ai eu aucune chance. J’ai parcouru les mêmes questions, mais j’ai été incapable de le comprendre. Quelqu'un peut me diriger dans la bonne direction.

int total = 0;
int i;

// loop through homeworks, add to total
for(Integer grade: this.homeworks){
total = total + grade;
}

Réponses:

0 pour la réponse № 1

Une boucle for améliorée en Java est juste une main courte pour une boucle for régulière, il n'y a pas de différence de performance entre les 2.

Voici quelques variantes que vous pouvez utiliser:

    List<Integer> homework = new ArrayList<>();
homework.add(new Integer(6));
homework.add(new Integer(7));
homework.add(new Integer(8));
homework.add(new Integer(9));

for (Integer integer : homework) {
System.out.println(integer);
}

for (Iterator<Integer> it = homework.iterator(); it.hasNext();) {
Integer integer = it.next();
System.out.println(integer);

}

for (int i = 0; i < homework.size(); i++) {
Integer integer = homework.get(i);
System.out.println(integer);

}

0 pour la réponse № 2

J'ai lu que amélioré pour la boucle est efficace que la normale pour la boucle.

En fait, parfois, c'est moins efficace pour le programme, mais la plupart du temps, c'est exactement la même chose.

Son plus efficace pour le développeur, qui est souvent beaucoup plus important

Une boucle for-each est particulièrement utile lors d'une itération sur une collection.

List<String> list =
for(Iterator<String> iter = list.iterator(); list.hasNext(); ) {
String s = list.next();
------
}

est plus facile à écrire que (mais fait la même chose que, donc ce n'est pas plus efficace pour le programme)

   List<String> list =
for(String s: list) {
---
}

L'utilisation de la "vieille" boucle est légèrement plus efficace lorsque vous accédez à une collection accessible de manière aléatoire, par index.

List<String> list = new ArrayList<String>(); // implements RandomAccess
for(int i=0, len = list.size(); i < len; i++) // doesn"t use an Iterator!

L'utilisation d'une boucle for-each sur une collection utilise toujours un Iterator qui est légèrement moins efficace pour les listes à accès aléatoire.

utiliser une boucle for-each n'est jamais plus efficace pour le programme, mais comme je l'ai dit, l'efficacité du développeur est souvent beaucoup plus important.