Xtend: добавление элементов из двух разных ArrayList

У меня есть ArrayList из Integer.

a = {1, 2, 3, 4, 5}
b = {6, 7, 8, 9, 10}

Я хочу добавить элементы 2 массивов. Итак, новый массив теперь будет:c = {7, 9, 11, 13, 15} который (1+6), (2+7), (3+8) и так далее.

Есть ли способ сделать это без цикла for? Я ищу что-то вроде a.add(b).

3 ответа

Вы могли бы использовать что-то вроде (0..<a.size).map[ idx | a.get(idx) + b.get(idx) ].toList

Если вы хотите работать с массивами, это будет выглядеть так:

val int[] a = #[1, 2, 3, 4, 5]
val int[] b = #[6, 7, 8, 9, 10]
val int[] sums = (0..<a.length).map[ idx | a.get(idx) + b.get(idx) ]

Вы можете сделать это с помощью Streams API (Java 8):

List<Integer> c = IntStream.range(0,a.size())
                           .map(i -> a.get(i) + b.get(i))
                           .boxed()
                           .collect(Collectors.toList());

Я не уверен, что он короче, чем цикл.

С Java 8 вы можете попробовать это так:

List<Integer> c = IntStream.range(0, a.size())
                .mapToObj(i -> a.get(i) + b.get(i))
                .collect(Collectors.toList());

Если тип вашей переменной - массив, тогда:

int[] a = {1, 2, 3, 4, 5};
int[] b = {6, 7, 8, 9, 10};

List<Integer> c = IntStream.range(0, a.length)
                .mapToObj(i -> a[i] + b[i])
                .collect(Collectors.toList());
Другие вопросы по тегам