2015-09-28 12 views
6

Ich möchte eine Funktion erstellen, die ein Array von inkrementellen Zahlen erstellt.Create Array von inkrementellen Int mit Stream anstelle von Schleife

Zum Beispiel möchte ich etwas erhalten, wie:

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

Die Funktion zwei Parameter angezeigt: Startnummer (einschließlich) und die endgültige Länge des Arrays:

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

Ich weiß, Wie man es mit einer For-Schleife macht:

Anstatt eine for-Schleife zu verwenden, möchte ich Ja verwenden va 8 Stream API. Weiß jemand, wie man es mit der Stream API macht?

Antwort

14

Es gibt bereits eine integrierte Methode für das:

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

IntStream.range liefert ein sequentielles IntStream von Anfang bestellt (einschließlich) bis zum Ende (exklusiv) um einen inkrementalen Schritt von 1.

Wenn Sie das Endelement einfügen möchten, können Sie IntStream.rangeClosed verwenden.

-1

Sie können auf diese Weise versuchen IntStream verwenden,

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

Bitte lassen Sie mich wissen, wenn es nicht für Sie arbeiten.

Verwandte Themen