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

如何将嵌套的scala集合转换为嵌套的Java集合

发布时间:2020-12-16 09:15:08 所属栏目:安全 来源:网络整理
导读:我有 Scala和 Java之间的编译问题. 我的Java代码需要一个 java.util.MapDouble,java.lang.IterableFoo 我的scala代码有一个 Map[Double,Vector[Foo]] 我得到编译错误: error: type mismatch;found : scala.collection.immutable.Map[scala.Double,Vector[Fo
我有 Scala和 Java之间的编译问题.

我的Java代码需要一个

java.util.Map<Double,java.lang.Iterable<Foo>>

我的scala代码有一个

Map[Double,Vector[Foo]]

我得到编译错误:

error: type mismatch;
found   : scala.collection.immutable.Map[scala.Double,Vector[Foo]
required: java.util.Map[java.lang.Double,java.lang.Iterable[Foo]]

似乎scala.collection.JavaConversions不适用于嵌套集合,即使Vector可以歪曲地转换为Iterable.通过scala收集和手动转换不足,我可以做些什么来使类型工作吗?

解决方法

scala.collection.JavaConversions应该不推荐使用IMHO.您最好通过使用scala.collection.JavaConverters来明确指出转换发生的时间和位置.在你的情况下

import scala.collection.JavaConverters._

type Foo = Int // Just to make it compile
val scalaMap = Map(1.0 -> Vector(1,2)) // As an example

val javaMap = scalaMap.map { 
  case (d,v) => d -> v.toIterable.asJava
}.asJava

(编辑:李大同)

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

    推荐文章
      热点阅读