Java 8中的流如何按索引计算数组中的项

0 java-8 java-stream

我是Java 8的新手,我正在研究流并遇到一个我无法解决的问题:

int[] intArr = new {1,2,4,6,7,8};
Run Code Online (Sandbox Code Playgroud)

我想使用Stream来获取数组中奇数位置的项目.

预期结果 : [1,4,7]

并使用Stream生成一个新的数组,该数组由以下形式组成: {intArr[i] + intArr[i+1]}

预期结果: [3,6,10,13,15]

Hol*_*ger 5

你的问题有点令人困惑,因为你一次提出两个不相关的问题并使用错误的术语.

你先问一下:

由于Java开始使用零索引数组,因此您不需要奇数索引,而是求偶数:

int[] intArr = {1,2,4,6,7,8};
int[] even=IntStream.range(0, (intArr.length+1)/2).map(i->intArr[i*2]).toArray();
System.out.println(Arrays.toString(even));
Run Code Online (Sandbox Code Playgroud)

[1, 4, 7]

如上所述,你的第二个问题令人困惑,因为看起来你想要以某种方式使用第一个的结果,但事实证明它完全不相关.如果要将后续数字添加到每个数字,您只需要一个流迭代每个索引但最后一个:

int[] result=IntStream.range(0, intArr.length-1)
            .map(i -> intArr[i]+intArr[i+1]).toArray();
System.out.println(Arrays.toString(result));
Run Code Online (Sandbox Code Playgroud)

[3, 6, 10, 13, 15]