В 2.8 это действительно просто, используя функциональность CanBuildFrom
(, как описано в Daniel ) и используя breakOut
с инструкцией типа компилятор относительно того, каким должен быть тип результата:
import scala.collection.breakOut
val m = (listA zip listB)(breakOut): Map[A,B]
Следующее также будет работать:
val n: Map[A,B] = (listA zip listB)(breakOut)
И (как указывал ниже EastSun) это было добавлено в библиотеку как toMap
val o = (listA zip listB).toMap
Что касается обращения карты, вы можете сделать:
val r = m.map(_.swap)(breakOut): Map[B, A]