2015-06-11 7 views
7

Forse un normale ciclo for è ancora la strada giusta, ma ho voluto vedere se c'è un modo più succinto di farlo in Java 8.Java 8 modo per ripetere un blocco di codice x volte

for (int i = 0; i < LIMIT; i++) { 
    // Code 
} 

C'è un modo più java 8 per farlo. In realtà non ho bisogno ho solo bisogno di ripetere qualcosa x numero di volte.

Grazie, Nathan

+3

'IntStream.range(). ForEach()' farà. – Voo

+1

http://stackoverflow.com/questions/18532488/does-java-8-provide-a-good-way-to-repeat-a-value-or-function?rq=1 forse questo? –

+1

Vedere anche ["Come creare iterazioni piacevoli in Java 8"] (http://stackoverflow.com/q/27779568/2711488) – Holger

risposta

11

Il modo migliore che posso vedere su come fare questo sarebbe qualcosa di simile IntStream.range(0, LIMIT).forEach($ -> code).

+0

Potrebbe chiarire il motivo per cui si utilizza il simbolo del dollaro per l'identificatore? È una convenzione usare '$' quando non è utilizzato. Inoltre, questo potrebbe mai causare un conflitto (per lo stesso motivo '$' l'uso negli identificatori è ammonito) – swalog

+1

@swalog In altri linguaggi '_' è usato per indicare i parametri inutilizzati, ma ciò non è permesso in Java, quindi basta selezionare ciò che vuoi. Non sono l'unico ad usarlo (vedi la risposta di Peter), ma dubito che ci sia un idioma diffuso. Il compilatore usa '$' per le classi interne (non vi è alcun rischio), alcuni campi speciali come '$ assertionsDisabled 'e presumibilmente (non controllato) metodi creati da lambdas (di nuovo non vi è alcun rischio). Scegli quello che vuoi. – Voo

+0

Farai molto se il 'codice' richiamato nella funzione Lambda genera un'eccezione controllata. Non puoi lanciare un'eccezione controllata in Java8 Lambda. – Shubham

5

Uno dei motivi per utilizzare IntStream è aggiungere parallel-ism, assumendo che tu capisca l'impatto di questo.

IntStream.range(0, LIMIT).parallel().forEach($ -> { 
    // some thing thread safe. 
}); 
Problemi correlati