2013-07-20 6 views
4

Каков элегантный способ перебора двух коллекций в Scala с использованием одного цикла?Итерация двух коллекций в одном цикле

Я хочу, чтобы установленные значения из первой коллекции второй, как это:

// pseudo-code 
for (i <- 1 to 10) { 
    val value = collection1.get(i); 
    collection2.setValueAtIndex(value, i) ; 
} 

На самом деле я использую Iterable черту, поэтому его лучше, если вы предоставляете решение, применимое для Iterable.

Обратите внимание: я не хочу копировать значения из одного в другое. Мне нужно получить доступ в цикле до i '-й элемент первой и второй коллекции Спасибо.

+0

Итак, вы хотите скопировать первые 10 элементов? Почему бы просто не сделать это? – Marcin

+0

@Marcin нет, мне нужен доступ в цикле к обоим элементам: от первой и от второй коллекции – MyTitle

ответ

6

Если вы необходимо получить доступ к каждому элементу в том же индексе из обоего коллекций, вы можете zip две коллекции:

for((e1, e2) <- collection1 zip collection2) { 
    //Do something with e1 and e2 
    //e1 is from collection1 and e2 is from collection2 
} 
7

Это не выглядит, как вы хотите перебрать вторую коллекцию на все, но хотят индекс вещи вы работаете, что и zipWithIndex хорошо для:

for ((el, i) <- collection1.zipWithIndex) { 
    collection2.setValueAtIndex(el, i) 
} 
Смежные вопросы