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

时间:2014-12-01 06:57:03

标签: java-8 java-stream

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

int[] intArr = new {1,2,4,6,7,8};

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

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

使用Stream生成由{intArr[i] + intArr[i+1]}

组成的新数组

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

1 个答案:

答案 0 :(得分: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));

[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));

[3, 6, 10, 13, 15]