java - 如何将 Scala 集合 Seq[(Int, Seq[String])] 转换为 Java 集合 List[(int, List[String])]?

标签 java scala

我知道scala.collection包中有两个非常有用的对象,可以帮助我们实现这个目标:

  • JavaConverters(如果我想明确说明并准确说明我要转换的内容)
  • JavaConversions(如果我不想共同控制转换,让 编译器为我隐式工作)

但是我在将它们应用于我的案例时遇到了一些麻烦,因为我的数据结构比我在许多示例中看​​到的其他数据结构要复杂一些。

我在使用 scala 代码,我希望我的 scala 函数返回一个 Java 集合。所以我想将 Scala Seq[(Int, Seq[String])] 转换为 Java 集合 List[(int, List[String])]。

我该怎么做?

最佳答案

首先使用map将Seq[(Int, Seq[String])]映射到Seq[(Int, List[String])],然后再使用与主集合相同的功能

import scala.collection.JavaConversions
val seq : Seq[(Int, Seq[String])] = some code
val seqOfLists = seq.map(s => (s._1, JavaConversions.seqAsJavaList(s._2)))
val listOfLists = JavaConversions.seqAsJavaList(seqOfLists)

或更新的 API:

import scala.collection.JavaConverters._
val seq : Seq[(Int, Seq[String])] = some code
val seqOfLists = seq.map(s => (s._1, s._2.asJava))
val listOfLists = seqOfLists.asJava

关于java - 如何将 Scala 集合 Seq[(Int, Seq[String])] 转换为 Java 集合 List[(int, List[String])]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48346623/

相关文章:

Java 正则表达式匹配器 : Negative Lookaround Not Working

list - 在 Scala 中,如何使用模式匹配来匹配具有指定长度的列表?

java - freemarker包括+base64

java - PyCharm - 无法保存设置 - 无法保存设置。请重启 PyCharm 社区版

java - 泛型 collections.mixin 原始类型和泛型类型。 Integer -> String - 异常但 String -> Integer 效果很好

java - 将像素值转换为 0 到 255

scala - 如何检查 Scala HighKinded TypeTag 是否为数组?

scala - 组合两个def后展平类型

scala - 方法迭代器和 View 之间有什么区别?

sql - 从光滑的纯 SQL 查询返回元组列类型