Acabo de descubrir las nuevas capacidades de transmisión de Java 8. Viniendo de Python, me preguntaba si ahora había una forma ordenada de hacer operaciones en matrices como sumar, multiplicando dos matrices en una forma "pitónica de una línea".
Gracias
java
arrays
java-8
java-stream
BlackLabrador
fuente
fuente
int[] result=IntStream.range(0, a.length).map( i->a[i]* b[i]).toArray();
mapToInt
para evitar el boxeo.Puede convertir una matriz en una secuencia utilizando
Arrays.stream()
:Una vez que tenga su transmisión, puede usar cualquiera de los métodos descritos en la documentación , como
sum()
o lo que sea. Puedemap
o lefilter
gusta en Python llamando a los métodos de transmisión relevantes con una función Lambda:Una vez que haya terminado de modificar su transmisión, llame
toArray()
para convertirla nuevamente en una matriz para usar en otro lugar:fuente
Tenga cuidado si tiene que lidiar con grandes números.
La suma anterior no es
2 * Integer.MIN_VALUE
. Necesitas hacer esto en este caso.fuente
Tenga en cuenta que Arrays.stream (arr) crea un LongStream (o IntStream, ...) en lugar de Stream, por lo que la función de mapa no puede utilizarse para modificar el tipo. Es por eso que se proporcionan las funciones .mapToLong, mapToObject, ...
Eche un vistazo a why-cant-i-map-integers-to-strings-when-streaming-from-an-array
fuente