il 14.02.2012 11:16, Scrive Jamie 121626976:
Grosso modo, chi decide e' la preferenza del programmatore, nel senso
che i tre metodi possono funzionare allo stesso modo, dipendentemente da
come li condizioni. Ad esempio i tre costrutti che seguono si comportano
allo stesso modo:
for(;;) {}
while(true) {}
do {} while(true);
Mentre il l'iterazione for puo' sostituire sia il do che il while, la
differenza tra do e while e' che nel do la condizione di controllo viene
valutata alla fine di ogni ciclo, mentre nel while all'inizio.
S'intende che tutte tre le iterazioni possono essere controllate con
break; e continue;.
Per iterazioni semplici, dove ad esempio una variabile di controllo non
e' strettamente necessaria, io preferisco il while. Ad esempio:
List<String> lista;
Iterator<String> iterator = lista !=null?lista.iterator():null;
for(;iterator !=null && iterator.hasNext();) {
String elemento = iterator.next();
}
analogamente col while;
while(iterator !=null && iterator.hasNext()) {
String elemento = iterator.next();
}
Ovviamente una visione ampia del linguaggio e delle classi che usi ti
aiuta in queste decisioni.
Ti segnalo anche l'iterazione for-each (introdotta nel linguaggio java a
partire, direi, dalla 1.5), che funziona con gli array e con le classi
che implementano java.lang.Iterable, ovvero le classi che implementano
il metodo iava.util.Iterator iteretor();
Appartengono a questo gruppo di classi tutte le Collection. L'uso e'
molto semplice:
for(String elemento: lista) {
}
che equivale all'iterazione di tutti gli elementi della lista,
esattamente come negli esempi sopra, ma funziona anche se lista e' un
String[].