Saltar al contenido

Cómo multiplicar valores en una lista usando secuencias de Java 8

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *