【发布时间】:2014-03-05 20:44:36
【问题描述】:
我遇到了一些问题。我需要转换类型
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))
}
}
这段代码解决了这个问题,但是太慢了。我认为这与++ 调用缓慢有关。有什么方法可以像我可以在恒定时间内将元素添加到迭代器的头部一样?如果没有,任何人都可以提出一个好的解决方法吗?
【问题讨论】:
标签: scala functional-programming iterator