我是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]
答案 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]