使用一个循环在Scala中迭代两个集合的优雅方法是什么?
我想要从第一个集合到第二个集合的设置值,如下所示:
// pseudo-code
for (i <- 1 to 10) {
val value = collection1.get(i);
collection2.setValueAtIndex(value, i) ;
}
事实上,我使用Iterable
特征,因此如果您提供适用于Iterable
的解决方案,效果会更好。
请注意:我不想将值从一个复制到另一个。我需要循环访问第一和第二个集合的i
'元素
感谢。
答案 0 :(得分:7)
看起来你根本想要迭代第二个集合,但想要你正在处理的东西的索引,这是zipWithIndex
有用的东西:
for ((el, i) <- collection1.zipWithIndex) {
collection2.setValueAtIndex(el, i)
}
答案 1 :(得分:6)
如果您需要访问两个集合中同一索引的每个元素,您可以zip
这两个集合:
for((e1, e2) <- collection1 zip collection2) {
//Do something with e1 and e2
//e1 is from collection1 and e2 is from collection2
}