/ / Verbessert für Schleifen - Java, Foreach

Verbessert für Schleifen - Java, Foreach

Also schaue ich mir eines meiner Beispiele in Java anNatürlich wurde anstelle einer regulären for-Schleife eine erweiterte for-Schleife verwendet. Ich habe versucht, es wieder in eine reguläre for-Schleife umzuwandeln, hatte aber kein Glück. Ich habe die ähnlichen Fragen durchgesehen, konnte es aber nicht herausfinden. kann mich jemand in die richtige richtung weisen.

int total = 0;
int i;

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

Antworten:

0 für die Antwort № 1

Eine erweiterte for-Schleife in Java ist nur eine kurze Hand für eine reguläre for-Schleife. Es gibt keinen Leistungsunterschied zwischen den beiden.

Hier sind ein paar verschiedene Varianten, die Sie verwenden könnten:

    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 für die Antwort № 2

Ich habe gelesen, dass Enhanced for Loop effizienter ist als Normal for Loop.

Eigentlich ist es manchmal weniger effizient für das Programm, aber die meiste Zeit ist es genau das gleiche.

Es ist effizienter für den Entwickler, was oft viel wichtiger ist

Eine For-Each-Schleife ist besonders nützlich, wenn Sie eine Sammlung durchlaufen.

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

ist einfacher zu schreiben als (macht aber dasselbe wie, ist also nicht effizienter für das Programm)

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

Die Verwendung der "alten" Schleife ist etwas effizienter, wenn Sie auf eine zufällig zugreifbare Auflistung nach Index zugreifen.

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

Die Verwendung einer For-Each-Schleife für eine Sammlung verwendet immer einen Iterator, der für Listen mit wahlfreiem Zugriff etwas weniger effizient ist.

Die Verwendung einer for-each-Schleife ist für das Programm nie effizienter, aber wie gesagt, die Effizienz des Entwicklers ist häufig viel wichtiger.