Java 8 Java8中的流如何通过索引计算数组中的项

Java 8 Java8中的流如何通过索引计算数组中的项,java-8,java-stream,Java 8,Java Stream,我是Java 8新手,正在学习streams,有一个我无法解决的问题: int[] intArr = new {1,2,4,6,7,8}; 我想使用流来获取数组中奇数位置的项 预期结果:[1,4,7] 并使用流生成一个新数组,该数组由以下内容组成:{intArr[i]+intArr[i+1]} 预期结果:[3,6,10,13,15]您的问题有点混乱,因为您同时提出两个不相关的问题,并且使用了错误的术语 第一个问题: 由于Java以零开始索引数组,因此您不需要奇数索引,而是偶数索引: int[]

我是Java 8新手,正在学习streams,有一个我无法解决的问题:

int[] intArr = new {1,2,4,6,7,8};
我想使用流来获取数组中奇数位置的项

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

并使用流生成一个新数组,该数组由以下内容组成:
{intArr[i]+intArr[i+1]}


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

您的问题有点混乱,因为您同时提出两个不相关的问题,并且使用了错误的术语

第一个问题:

由于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]

您的问题有点混乱,因为您同时提出两个不相关的问题,并且使用了错误的术语

第一个问题:

由于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]