我有两个列表,一个 List[A]
和一个 List[B]
。我想要的是 Map[A,B]
但我想要 zip
的语义。所以开始是这样的:
var tuplesOfAB = listOfA zip listOfB
现在我不确定如何从我的 tuplesOfAB
构造 Map
。
作为后续问题,我还想反转我的 map ,以便从 Map[A,B]
我可以创建一个 Map[B,A]
。谁能用线索棒打我吗?
最佳答案
在 2.8 中,使用 CanBuildFrom
功能 ( as described by 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
至于反转 map ,你可以这样做:
val r = m.map(_.swap)(breakOut): Map[B, A]
关于list - 在Scala中,有没有办法将两个列表转换为Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2189784/