我有一个scala项目需要从scala 2.12迁移到2.13。我有一个简单的代码,可以将scala Map转换为Java.util.Map。我使用asJava方法来实现,代码很简单
val jMap : java.util.Map[String,java.lang.Double]= imputerMap.mapValues(Double.box).asJava
字符串
但我得到一个错误
found : Iterable[(String, Double)]
[ERROR] required: java.util.Map[String,Double]
[ERROR] val jMap : java.util.Map[String,java.lang.Double]= imputerMap.mapValues(Double.box).asJava
型
在scala 2.13
的文档中,我看到导入的更改为import scala.jdk.CollectionConverters._
,但我没有看到它应该中断,我现在如何进行转换?
1条答案
按热度按时间cmssoen21#
正如你已经看到的,从scala 2.12到scala 2.13,scala和java集合之间的转换已经发生了变化:
要启用这些转换,只需从JavaConverters对象导入它们:
字符串
要启用这些转换,请从CollectionConverters对象导入它们:
型
Map
类中的方法mapValues
的签名也发生了变化:型
型
mapValues
返回MapView
。您可以在以下链接中找到有关视图的信息要从一个集合 * 转到它的视图**,可以对集合使用view方法**。如果
xs
是某个集合,那么xs.view
是相同的集合,但是所有转换器都是惰性实现的。要将从aview* 恢复到astrict collection,可以使用to转换操作,并将严格集合工厂作为参数(例如xs.view.to(List)
)因此,您的代码应该重构为
型