2016-04-19 10 views
5

Qualcuno sa se esiste un modo semplice di refactoring del codice per utilizzare un foreach per iterare su una raccolta invece di una combinazione while/Iterator?Riflettore Eclipse Iterator/while foreach

Esempio:

ho:

Iterator<MyObject> iterator = list.iterator(); 
while (iterator.hasNext()) { 
    MyObject myObject = iterator.next(); 
    // do stuff 
} 

E voglio:

for (MyObject myObject : list) { 
    // do stuff 
} 

E sì, ho capito che non sarà possibile ottenere alcun miglioramento delle prestazioni. Voglio solo che sia meno prolisso e perché mi piace :)

+2

*** un modo semplice di refactoring del codice ... *** solo sostituire un frammento dagli altri ... –

+0

A * * Più semplice ** modo di refactoring del codice, invece di fare un lavoro di scimmia :) – renke

+0

Cosa intendi per refactoring? Intendi automatizzare la sostituzione in ogni file del tuo codice sorgente, quindi non farlo manualmente? –

risposta

0

Supponiamo che tutta l'occorrenza del codice di iterazione sia simile al tuo esempio, prova a cercare e sostituire con la seguente espressione regolare.

Ricerca:

Iterator<([a-zA-Z0-9_]{1,})> [a-zA-Z0-9_]{1,} = ([a-zA-Z0-9_]{1,})\.iterator\(\);\R[\t]{1,}while \(iterator\.hasNext\(\)\) \{\R[\t]{1,}[a-zA-Z0-9_]{1,} ([a-zA-Z0-9_]{1,}) = iterator\.next\(\); 

Sostituire:

for($1 $3 : $2) {