Scala 将Java双精度列表转换为Scala中的可遍历对象的程序
如果你需要在Scala中处理Java的双精度列表(即java.util.List[Double]),你可能会希望将其转换为Scala的可遍历对象(即Traversable[Double])。本文将演示如何编写一个函数来完成这个转换。
示例代码
下面的代码示例将Java的双精度列表转换为Scala的List[Double]:
import scala.collection.JavaConverters._
def convertList(javaList: java.util.List[Double]): List[Double] = {
javaList.asScala.toList
}
我们首先使用 import scala.collection.JavaConverters._ 导入Java集合转换相关的类和函数。然后定义一个函数 convertList,它接受一个Java的双精度列表作为输入,返回一个Scala的List[Double]。在函数内部,我们使用.asScala将Java的列表转换为Scala的可遍历对象,然后使用.toList将可遍历对象转换为Scala的List[Double]。
这样,我们就可以像这样使用convertList函数:
val javaList = new java.util.ArrayList[Double]()
javaList.add(1.0)
javaList.add(2.0)
javaList.add(3.0)
val scalaList = convertList(javaList)
println(scalaList) // 输出 List(1.0, 2.0, 3.0)
我们首先创建一个Java的双精度列表并添加一些元素。然后使用convertList函数将其转换为Scala的List[Double],最后打印输出结果。
更通用的函数
上面的convertList函数只能将Java的双精度列表转换为Scala的List[Double]。如果我们想要将Java的任何类型列表(如java.util.List[String])转换为Scala的对应类型的可遍历对象(如Traversable[String]),我们需要编写一个更通用的函数。
下面是一个更通用的函数:
import scala.collection.JavaConverters._
def convertList[A](javaList: java.util.List[A]): Traversable[A] = {
javaList.asScala
}
与convertList函数不同,它不将可遍历对象转换为列表。而是返回一个可遍历对象本身。此函数的类型为[A](javaList: java.util.List[A]) => Traversable[A],其中[A]是类型参数,表示任何类型。
这样,我们就可以像这样使用通用的convertList函数:
val javaList = new java.util.ArrayList[String]()
javaList.add("foo")
javaList.add("bar")
javaList.add("baz")
val scalaTraversable = convertList(javaList)
println(scalaTraversable) // 输出 Vector(foo, bar, baz)
我们首先创建一个Java的字符串列表并添加一些元素。然后使用convertList函数将其转换为Scala的对应类型的可遍历对象,最后打印输出结果。
结论
通过使用Scala标准库中的scala.collection.JavaConverters和类型参数,我们可以轻松地将Java的双精度列表(或其他任何类型的列表)转换为Scala中的可遍历对象。
极客笔记