我创建了一个MultiMap
val ms = new collection.mutable.HashMap[String,collection.mutable.Set[String]]() with collection.mutable.MultiMap[String,String]
在填充了条目之后,必须将其传递给需要Map [String,Set [String]]的函数.直接传递ms不起作用,并尝试通过toMap将其转换为不可变映射
ms.toMap[String,Set[String]]
产量
Cannot prove that (String,scala.collection.mutable.Set[String]) <:< (String,Set[String]).
这可以解决而无需手动迭代ms并将所有条目插入到新的不可变映射中吗?
解决方法
似乎问题是可变的集合.所以变成不可变的集合起作用:
scala> (ms map { x=> (x._1,x._2.toSet) }).toMap[String,Set[String]] res5: scala.collection.immutable.Map[String,Set[String]] = Map()
或者更好地遵循Daniel Sobral的建议:
scala> (ms mapValues { _.toSet }).toMap[String,Set[String]] res7: scala.collection.immutable.Map[String,Set[String]] = Map()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。