2 回答

TA貢獻1824條經驗 獲得超5個贊
正如我在評論中提到的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]

TA貢獻1895條經驗 獲得超3個贊
您可以使用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]?
? ? }
}
添加回答
舉報