Solución:
Intente reducir las corrientes, debería ayudar.
Igual que:
listOfIntegers.stream().reduce(1, (a, b) -> a * b)
Este enlace proporciona más información sobre cómo utilizar reduce.
Una cosa a tener en cuenta al multiplicar un número desconocido de ints
es la posibilidad de desbordes. En vez de (a,b) -> a*b
, es más seguro de usar Math::multiplyExact
, que arrojará una excepción en caso de desbordamiento:
listOfIntegers.stream().mapToInt(x->x).reduce(1, Math::multiplyExact);
Alternativamente, puede acomodar grandes resultados reduciendo BigInteger
:
listOfIntegers.stream()
.map(BigInteger::valueOf)
.reduce(BigInteger.ONE, BigInteger::multiply);
La reducción con una identidad volverá 1
o BigInteger.ONE
si la lista está vacía, es posible que no sea lo que desea. Si desea manejar el caso de una lista vacía, elimine el primer argumento para reduce
y luego lidiar con el resultado Optional
.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)