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

如何使用Java流将第一个元素乘以第二个元素,java,Java,我想得到当前元素的乘积,列表中的下一个元素,但应该只使用JavaStreamsAPI Integer[] inputArray = new Integer[]{1, 3, 5, 7, 9} Integer[] outputArray = new Integer[]{4, 15, 35, 63} 谢谢正如我在评论中提到的1*3不是四(它是三),否则使用IntStream.range(int,int)生成索引序列并执行乘法。像 Integer[] inputArray = new Integer[

我想得到当前元素的乘积,列表中的下一个元素,但应该只使用JavaStreamsAPI

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

谢谢

正如我在评论中提到的
1*3
不是四(它是三),否则使用
IntStream.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]
您可以使用以下方法:


您遇到的问题是:获取元素还是将元素相乘?到目前为止,您是否编写过任何代码试图解决这个问题,如果是的话,它是什么?一乘三不是四。。。;我不知道为什么要使用
arrayList.stream()
,什么是
arrayList
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] 
    }
}