java将值数组映射到奇数索引

时间:2019-03-15 01:05:50

标签: java java-stream

这是我的代码:

int []a = {1,2,3,4,5,7};

Arrays.stream(a)
      .map((n, i) -> i)
      .filter(n -> a[n] % 2 == 1)
      .forEach(System.out::println);

我正在尝试打印所有奇数的INDEX。除了地图,其他一切似乎都很好。它返回一条错误消息:

  

错误:<lambda parameter>无法转换为int。

我有点理解为什么会发生这种情况,但是我不知道如何解决它。

注意:这与从void方法返回的期望不同。这是对泛型的错误理解。

2 个答案:

答案 0 :(得分:3)

怎么样:

int[] a = {1,2,3,4,5,7};
IntStream.range(0, a.length)
         .filter(e -> a[e] % 2 == 1)
         .forEach(System.out::println);

哪个会输出:

0
2
4
5

使用IntStream::range创建从0到Stream的整数的a.length,然后如果该索引处a的元素为奇数,它将打印出

答案 1 :(得分:3)

要打印所有奇数的索引,我将从有效索引的范围开始。喜欢,

int[] a = { 1, 2, 3, 4, 5, 7 };
IntStream.range(0, a.length).filter(i -> a[i] % 2 == 1).forEach(System.out::println);