2013-07-20 77 views
4

使用一個循環在Scala中迭代兩個集合的優雅方式是什麼?在一個循環中迭代兩個集合

我想設定值從第一個集合到第二,像這樣:

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

其實我用Iterable特點,所以它的更好,如果你提供一種適用於Iterable解決方案。

請注意:我不想從一個值複製到另一個值。我需要訪問的第一個和第二個集合的i'th元素循環 謝謝。

+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) 
}