scala - 如何从 scala Map 转换为 scala.collection.immutable.HashMap?

标签 scala scala-collections

出于某种奇怪的原因,有一种方法 merged仅在 scala.collection.immutable.HashMap 中声明但不是通用的 Map特征(也许它的实现使它对其他 Map 实现非常不友好?)。

所以我需要转换我的 Map[A, B]HashMap[A, B]到目前为止,我找不到一种简单的方法来做到这一点。这是我目前破解 def to[Col[_]] 的实现它期望一元更高种类而不是二进制更高种类。

val m1 = Map("foo" -> 1)
val m2 = Map("foo" -> 2, "bar" -> 2)

type HM[_] = HashMap[String, Int]
(m1.to[HM] merged m2.to[HM]) { case ((k1, v1), (k2, v2)) => (k1, v1 + v2) } // Map("foo" -> 3, "bar" -> 2)

它按预期工作,但我忍不住认为必须有更好的方法从 Map 转换至 HashMap (假设它是默认实现)。

或者以更一般、更好的方式访问 Scala 集合通用特征的默认实现?

最佳答案

您可以从一个空的 HashMap 开始,然后在其中添加所有元素:

immutable.HashMap.empty ++= yourMap

关于scala - 如何从 scala Map 转换为 scala.collection.immutable.HashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36981131/

相关文章:

scala - 如何将 Float 取消/编码为 Scala Option[Float] 而不是使用 JAXB 的 Java Float?

Scala:获取对象类名称的正确方法?

java - scala 2.8 隐式 java 集合转换

json - @JsonIgnore 在 Scala 案例类中不起作用

scala - Scala案例类扩展了具有可序列化的产品

scala - 我们如何在提升映射器中创建唯一约束

scala - Scala集合中缺少par方法

Scala "functional"将 'bad nesting"的序列转换为格式良好的 XML 的方法

scala - 在Scala集合中查找和替换项目

scala - 如何连接作为 map 值的列表?