如何从像这样的迭代器中获取
val it = Iterator("one","two","three","four","five")
像
这样的地图 Map(four -> 4, three -> 5, two -> 3, five -> 4, one -> 3)
var m = Map[String, Int]()
while (it.hasNext) {
val cell = it.next()
m += (cell -> cell.length())
}
这是使用var
的解决方案,但我想只使用Immutable和val
变量。
如果我使用for yield
语句,返回的对象将是Iterator[Map]
,我不希望这样:
val m = for(i<- it if it.hasNext) yield Map(i->i.length())
答案 0 :(得分:7)
你可以使用map:
val m = it.map(c => c -> c.length).toMap