Il costrutto foreach in java
- Home page »
- Programmazione »
- Java »
- Tips
Il foreach è un particolare costrutto (disponibile a partire da Java 5) che ci permette di iterare velocemente
una struttura dati. In java possiamo usarlo sia su un array oppure su oggetti di tipo Iterable,
cioè che dispongono di un iteratore (java.util.Iterator).
Le Collections di java (Linkedlist, ArrayList, etc.) sono tutti
oggetti di tipo Iterable. Vediamo il costrutto generico :
Adesso vediamo un esempio per quanto riguarda gli oggetti Iterable. In questo caso il codice risulterà ancora più sintetico. Ad esempio se vogliamo iterare una LinkedList, abitualemente agiamo in questo modo :
for(type_var: arr) {
//ciclo
}
Supponiamo di creare un metodo che calcoli la somma di tutti gli elementi :
public static int somma(int [] array) {
int somma = 0;
for(int i = 0; i < array.length; i++) {
somma += array[i];
}
return somma;
}
Allo stesso modo con il costrutto foreach rende tutto puù chiaro e sintetico :
public static int somma(int [] array) {
int somma = 0;
for(int element:array)
somma+=element;
return somma;
}
L' intero element sarà il nostro i-esimo elemento corrispondente al for visto sopra.
Adesso vediamo un esempio per quanto riguarda gli oggetti Iterable. In questo caso il codice risulterà ancora più sintetico. Ad esempio se vogliamo iterare una LinkedList, abitualemente agiamo in questo modo :
LinkedList <String> lista = new LinkedList<String>();
lista.add("a");
lista.add("b");
....
Iterator <String> it = lista.iterator();
while(it.hasNext()) {
String str = it.next();
...
}
Mentre il costrutto foreach semplifica i riferimenti a livello di compilazione :
for(String str:lista) {
.....
}
In questo caso str assumerà sequenzialmente il valore di ciascun elemento della lista.
Altri link che potrebbero interessarti
» Utilizzare un JButton in Java Swing » Numeri casuali in java » Modalità Full Screen Exclusive in java » Le classi anonime » Java Regex » Java Cursor Mouse » Import Static Java » Implementare un Singleton » Implementare il System.out su una JTextArea » Il blocco static » Bordo con titolo in Java Swing » Background Image per componenti Java Swing




