0
我遇到了一些問題。我需要使用遞歸函數轉換的類型將地圖[String,Iterator [Int]]轉換爲Iterator [Map [String,Int]]
Map[String, Iterator[Int]] -> Iterator[Map[String, Int]]
我目前在解決這個問題的辦法是:
def Inverter(input: Map[String, Iterator[Int]], output: Iterator[Map[String, Int]]) = {
val inversion: Map[String, Int] = input.flatMap {case (symbol, iterator) => iterator.hasNext match {
case true => Some((symbol,iterator.next))
case false => None
}}
inversion.size match {
case 0 => output
case _ => Inverter(input, output ++ Iterator(inversion))
}
}
此代碼解決了問題,但速度太慢。我認爲這與++
呼叫速度緩慢有關。有什麼辦法可以將元素放在迭代器的頭部,就像我可以在List中定時一樣?如果沒有,任何人都可以想出一個很好的解決方法?
非常好,這正是我一直在尋找的!謝謝! –