Можно ли добавлять элементы в массив с помощью IntStream? - PullRequest
1 голос
/ 03 октября 2019

Я использовал этот макрос в cpp

forn(i,3) cin>>arr[n]; //assume arr initialised earlier

Поэтому я пытался добиться этого в Java, используя lambda и IntStream

  Scanner sc = new Scanner(System.in);
  IntStream.range(0, 5).map(i->arr[i]).forEach(e->e=sc.nextInt());

Но я знаюэтот поток не манипулирует базовой структурой данных. Итак, могу ли я достичь этого с помощью потоков или я должен создать свой собственный функциональный интерфейс для этого? спасибо

Ответы [ 2 ]

3 голосов
/ 03 октября 2019

Просто измените свой код на

Scanner sc = new Scanner(System.in);
IntStream.range(0, 5).forEach(i -> arr[i] = sc.nextInt());

Но также обратите внимание, что это не очень хороший вариант использования для потоков. Простой цикл, вероятно, был бы более подходящим.

2 голосов
/ 03 октября 2019

Вы, похоже, ищете использование toArray с IntStream, пока вы отображаете целое число, указанное в качестве ввода:

int arr[] = IntStream.range(0, 5).map(i -> sc.nextInt()).toArray()
...