Scala - 将迭代器转换为地图

sal*_*vob 0 scala

如何从像这样的迭代器中获取

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())
      }
Run Code Online (Sandbox Code Playgroud)

这是一个使用的解决方案,var但我想只使用Immutable和val变量.

如果我使用该for yield语句,返回的对象将是一个Iterator[Map],我不希望这样:

val m = for(i<- it if it.hasNext) yield Map(i->i.length())
Run Code Online (Sandbox Code Playgroud)

nma*_*mat 7

你可以使用map:

val m = it.map(c => c -> c.length).toMap
Run Code Online (Sandbox Code Playgroud)