加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中,有没有办法将两个列表转换成地图?

发布时间:2020-12-16 09:38:17 所属栏目:安全 来源:网络整理
导读:我有两个列表,一个列表[A]和一个列表[B]。我想要的是一个地图[A,B],但我想要的zip的语义。所以开始像这样: var tuplesOfAB = listOfA zip listOfB 现在我不知道如何从我的tuplesOfAB构造一个地图。 作为一个后续问题,我也想反转我的地图,以便从地图[A
我有两个列表,一个列表[A]和一个列表[B]。我想要的是一个地图[A,B],但我想要的zip的语义。所以开始像这样:

var tuplesOfAB = listOfA zip listOfB

现在我不知道如何从我的tuplesOfAB构造一个地图。

作为一个后续问题,我也想反转我的地图,以便从地图[A,B]我可以创建一个地图[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所指出的那样),这已经被添加到图书馆中

val o = (listA zip listB).toMap

至于颠倒地图,你可以做:

val r = m.map(_.swap)(breakOut): Map[B,A]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读