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())
}
это решение с использованием var
но я хотел бы использовать только неизменный и val
переменная.
Если я использую for yield
Заявление возвращающий объект будет Iterator[Map]
и я не хочу этого
val m = for(i<- it if it.hasNext) yield Map(i->i.length())
1 ответ
Решение
Вы можете просто использовать карту:
val m = it.map(c => c -> c.length).toMap