0
如何從一個Iterator得到這樣斯卡拉 - 變換迭代到地圖
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())
你'for'版本很奇。你不需要'if' - 'for'已經處理了這個,你爲每個條目產生一個單獨的'Map',而不僅僅是元組。 '{for(i < - it)yield(i - > i.length)} .toMap'會做到這一點。 –