当前位置: 首页 > 面试题库 >

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

卢黎昕
2023-03-14
问题内容

我在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应该弃用恕我直言。您最好使用来明确说明转换的时间和地点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


 类似资料:
  • 问题内容: 我有一个,想要一个番石榴,在其中我们将s按其功能的每个标签分组。 我正在使用Java 8,因此lambda和方法引用很好/受到鼓励。 例如,如果我有: 我会得到: 问题答案: 您可以为此使用定制收集器: 这不会引起额外的副作用(请参见此处),并且是并发的并且更加惯用。 您还可以将这些临时lambda提取到成熟的收集器中,如下所示: 然后该集合将如下所示: 如果顺序对您不重要,则也可以从

  • 问题内容: 问题 与新HashSet(Collection)等效的Scala)相关,如何将Java集合(例如)转换为Scala集合? 我实际上是在尝试将Java API调用转换为Spring的 (返回a )成Scala不可变。因此,例如: 这似乎有效。欢迎批评! 问题答案: 您的最后一条建议有效,但您也可以避免使用: 请注意,默认情况下,由于提供了此功能。

  • 我有两个嵌套的case类: 当然,解决方案应该是泛型的,并且适用于任何case类。 注意:这个讨论很好地回答了如何将单个case类映射到映射。但我无法将其用于嵌套的case类。相反,我得到了:

  • 我有三个实体主题、主题和类别。在检索包含主题和主题的所有类别时,如何预取每个实体的id和名称列?我不需要其他字段,因为它会影响性能。

  • 问题内容: 我是Hibernate和HQL的新手。我想在HQL中编写一个更新查询,其SQL等效项如下: 是的PK ,是的FK和PK 。有一对一的映射。 相应的Java类是Patient(患者)(具有lastName,firstName,doctorId字段)和Doctor(具有DoctorId字段)。 谁能告诉我上面的SQL查询的HQL等效项是什么? 非常感谢。 问题答案: 如果您检查规范,则可以

  • 本文向大家介绍Python 语言嵌套集合,包括了Python 语言嵌套集合的使用技巧和注意事项,需要的朋友参考一下 示例 导致: 而是使用frozenset: