Je viens de découvrir les nouvelles capacités de flux Java 8. Venant de Python, je me demandais s'il y avait maintenant une façon ordonnée de faire des opérations sur des tableaux comme la sommation, en multipliant deux tableaux d'une manière "pythonique d'une ligne"?
Merci
la source
int[] result=IntStream.range(0, a.length).map( i->a[i]* b[i]).toArray();
mapToInt
pour éviter la boxe.Vous pouvez transformer un tableau en flux en utilisant
Arrays.stream()
:Une fois que vous avez votre flux, vous pouvez utiliser l'une des méthodes décrites dans la documentation , comme
sum()
ou autre. Vous pouvezmap
oufilter
aimer en Python en appelant les méthodes de flux pertinentes avec une fonction Lambda:Une fois que vous avez fini de modifier votre flux, vous appelez ensuite
toArray()
pour le reconvertir en un tableau à utiliser ailleurs:la source
Soyez prudent si vous devez composer avec un grand nombre.
La somme ci-dessus ne l'est pas
2 * Integer.MIN_VALUE
. Vous devez le faire dans ce cas.la source
Veuillez noter que Arrays.stream (arr) crée un LongStream (ou IntStream, ...) au lieu de Stream afin que la fonction de carte ne puisse pas être utilisée pour modifier le type. C'est pourquoi les fonctions .mapToLong, mapToObject, ... sont fournies.
Jetez un œil à pourquoi-ne-pas-mapper-des-entiers-à-des-chaînes-lors-du-streaming-depuis-un-tableau
la source