2015-09-28 10 views
6

Voglio creare una funzione che costruisca una serie di numeri incrementali.Creare una matrice di int incrementale utilizzando Stream anziché per ciclo

Ad esempio, voglio ottenere qualcosa di simile:

int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, ..., 1000000}; 

La funzione riceverà due parametri: numero iniziale (compreso) e la lunghezza finale della matrice:

public int[] buildIncrementalArray(int start, int length) { ... } 

lo so come farlo usando un ciclo for:

public int[] buildIncrementalArray(int start, int length) { 
    int[] result = new int[length]; 
    for(int i = 0 ; i < length ; i++) { 
     result[i] = start + i; 
    } 
    return result; 
} 

Invece di usare un ciclo for, voglio usare Ja va 8 Stream API. Qualcuno sa come farlo usando Stream API?

risposta

14

Esiste già un metodo incorporato per questo:

int[] array = IntStream.range(start, start + length).toArray(); 

IntStream.range restituisce una sequenza ordinata IntStream dall'inizio (compreso) fino alla fine (esclusiva) da incrementi del 1.

Se si desidera includere l'elemento finale, è possibile utilizzare IntStream.rangeClosed.

-1

Si può provare in questo modo utilizzando IntStream,

int[] array = new int[length]; 
IntStream.range(0, length).forEach(i -> array[i] = i + 1); 

Si prega di farmi sapere se non funziona per voi.

Problemi correlati