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
Другие вопросы по тегам