在一个循环中迭代两个集合

时间:2013-07-20 17:36:18

标签: scala

使用一个循环在Scala中迭代两个集合的优雅方法是什么?

我想要从第一个集合到第二个集合的设置值,如下所示:

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

事实上,我使用Iterable特征,因此如果您提供适用于Iterable的解决方案,效果会更好。

请注意:我不想将值从一个复制到另一个。我需要循环访问第一和第二个集合的i'元素 感谢。

2 个答案:

答案 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
}