有没有一种方法可以在Scala中使用两个并行的迭代器进行for循环?

时间:2020-02-26 22:00:20

标签: scala for-loop foreach syntax iteration

我试图在Scala中对HashMap进行for循环,但是我还需要对迭代次数进行计数,例如各种索引。这就是我想要的功能:

    val map = HashMap()
    val i = 0;

    for ((k, v) <- map) {
        // do something
        i += 1
    }

但是我希望它看起来像这样,其中我在for循环语法中进行了更新。但是,这似乎是一个嵌套循环,而不是并行迭代器。

    for ((k, v) <- map; i <- 0 until map.size) {
        // do something
    }

1 个答案:

答案 0 :(得分:4)

zipWithIndex方法专门用于此目的:

for {((k, v), i) <- map.zipWithIndex} yield {???}

map.zipWithIndex.collect { case ((k, v), i) => ??? }

在这种情况下,我个人将使用第二个版本,并且在遍历多个集合时仅使用for语法。