Java LongStream pour additionner les éléments du tableau int


Parce que de nombreux entiers peuvent déborder lorsqu'ils sont additionnés, j'avais besoin d'un long flux pour faire le travail mais il n'acceptera pas le tableau int. Comment puis-je convertir chaque élément au moment du streaming au lieu d'utiliser un tableau long?

// arr is an int[]
LongStream s = Arrays.stream( arr); // error
result = s.reduce(0, Long::sum); 

Edit: il semble que le flux entier soit transformé en un long en utilisant sa méthode comme dans la réponse de Tagir Valeev.

Vous pouvez également utiliser la fonction "LongStream".]}
Author: huseyin tugrul buyukisik, 2015-09-26

1 answers

Utiliser IntStream.asLongStream() méthode:

LongStream s = Arrays.stream(arr).asLongStream();

Soit dit en passant s.reduce(0, Long::sum) est l'alternative la plus longue pour simple sum() méthode (qui fait la même chose en interne):

long result = Arrays.stream(arr).asLongStream().sum();
 6
Author: Tagir Valeev, 2015-09-26 12:37:11