Da viele Ganzzahlen überlaufen können, wenn summiert wird, brauchte ich einen langen Stream, um den Job zu erledigen, aber es akzeptiert int
Array nicht. Wie kann ich jedes Element zum Zeitpunkt des Streams konvertieren, anstatt ein long
Array zu verwenden?Java LongStream zum Summieren von int Array-Elementen
// arr is an int[]
LongStream s = Arrays.stream(arr); // error
result = s.reduce(0, Long::sum);
Edit: es scheint, dass Integer-Strom in eine lange ein mit seiner Methode wie in Tagir Valeev Antwort gedreht wird.
LongStream asLongStream();
Dies tut Kopie Array in einem temporären langes Array nehme ich an. Vielen Dank. –
@huseyintugrulbuyukisik, Natürlich kopiert es nicht. –
Wenn ich die parallele Version verwende, berechnet sie zuerst 5ms (16M Elemente), und dann Sekunden später, jede Summe nimmt 15ms plötzlich. Ist das eine Folge einer Müllsammlung? –