domenica 12 aprile 2015

Java8 iterazione esterna

Esempio iterazione esterna con Java 8.
Supponiamo di avere una lista di oggetti di tipo Persona identificati da alcune proprietà (nome, cognome, età ) ed una proprietà isMaggiorenne che ci filtra le persone con età > 18 anni.
Per avere un conteggio di queste occorrenze prima di Java 8 si operava in questo modo:



int count=0;
  for(Persona p: l){
   if(p.isMaggiorenne()){
    count++;
   }
  }


Questa è la classica iterazione esterna.
Con Java 8 si introduce il concetto di iterazione interna , dove invece di procedere noi all'esecuzione del ciclo for si opera sugli stream inserendo i filtri esplicitamente.
Il caso di esempio precedente si risolve in Java 8 nel seguente modo:

long l= i.getListePersone().stream().filter(person -> person.isMaggiorenne()).count();


Oltre alla maggiore compattezza del codice il vero vantaggio è che l'utilizzo degli stream consente  al compilatore di eseguire lui al meglio le operazioni richieste, magari anche parallelizzando le operazioni se necessario.

Nessun commento:

Posta un commento