如何使用 Java Streams 将第一个元素乘以第二个元素

我想获取列表中当前元素下一个元素的乘积,但应该只使用 Java Streams api。

Integer[] inputArray = new Integer[]{1, 3, 5, 7, 9}
Integer[] outputArray = new Integer[]{4, 15, 35, 63}

谢谢


慕村9548890
浏览 179回答 2
2回答

沧海一幻觉

正如我在评论中提到的1 * 3不是四个(而是三个),否则使用 anIntStream.range(int, int)生成索引序列并执行乘法。喜欢,Integer[] inputArray = new Integer[] { 1, 3, 5, 7, 9 };int[] outputArray = IntStream.range(0, inputArray.length - 1)        .map(i -> inputArray[i] * inputArray[i + 1]).toArray();System.out.println(Arrays.toString(outputArray));哪个输出[3, 15, 35, 63]

蛊毒传说

您可以使用Stream.reduce()方法:import java.util.Arrays;import java.util.concurrent.atomic.AtomicInteger;public class Main {    public static void main(String[] args) {        Integer[] inputArray = new Integer[]{1, 3, 5, 7, 9};        Integer[] outputArray = new Integer[inputArray.length - 1];        AtomicInteger index = new AtomicInteger(0);        Arrays.stream(inputArray).reduce((a, b) -> {            outputArray[index.getAndIncrement()] = a * b;            return b;        });        System.out.println(Arrays.toString(outputArray)); //[3, 15, 35, 63]     }}现场演示
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java