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中的可遍历对象。