массив сопоставления значений java с индексом нечетных значений - PullRequest
0 голосов
/ 15 марта 2019

Вот мой код:

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

Я пытаюсь напечатать ИНДЕКС всех нечетных чисел. Все вроде нормально, кроме карты. Возвращает сообщение об ошибке:

Ошибка: <lambda parameter> не может быть преобразовано в int.

Я немного понимаю, почему это происходит, но я не знаю, как обойти это.

ПРИМЕЧАНИЕ. Это не то же самое, что ожидание возврата от метода void. Это было неверное понимание дженериков.

Ответы [ 2 ]

3 голосов
/ 15 марта 2019

Чтобы напечатать индексы всех нечетных чисел, я бы начал с диапазона допустимых индексов. Мол,

int[] a = { 1, 2, 3, 4, 5, 7 };
IntStream.range(0, a.length).filter(i -> a[i] % 2 == 1).forEach(System.out::println);
3 голосов
/ 15 марта 2019

Как насчет:

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 для создания Stream целых чисел от 0 до a.length, а затем, если элемент a по этому индексу нечетный, он его распечатает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...