Scala 将 Java 列表转换为 Scala 中的 Seq 的程序

Scala 将 Java 列表转换为 Scala 中的 Seq 的程序

Java 开发中经常需要使用列表(List)数据结构,而在 Scala 开发中常用的则是 Seq(Sequence 序列)数据结构。如果需要在 Java 列表和 Scala Seq 之间进行转换,下面几种方法都可以实现。

方法1:使用 Java Conversions

Scala 提供了一个工具类 JavaConversions,来实现 Java 和 Scala 的集合相互转换。JavaConversions 提供了很多隐式转换方法,可以将 Java 集合转换为 Scala 集合,并且不需要额外的导入语句。下面就是将 Java List 转换为 Scala Seq 的示例代码,JavaList 是要被转换的 Java List:

import scala.collection.JavaConversions._

val scalaSeq: Seq[String] = JavaList[String]().toSeq

方法2:手动遍历列表实现转换

除了使用 JavaConversions,还可以使用手动遍历的方式来实现 Java List 和 Scala Seq 的互相转换。下面是一个将 Java List 转换为 Scala Seq 的示例:

import scala.collection.mutable.Seq

val javaList: java.util.List[String] = new java.util.ArrayList[String]()

val scalaSeq: Seq[String] = Seq[String]()
for (element <- javaList.toArray) {
  scalaSeq += element.toString
}

方法3:使用 JavaConverters

Scala 还提供了一个工具类 JavaConverters,可以方便地将 Java 集合转化为 Scala 集合。JavaConverters 提供了许多隐式转换,可以使用 asScala 和 asJava 两个方法将 Java 集合转变成 Scala 集合或者 Scala 集合转换为 Java 集合。下面是将 Java List 转换为 Scala Seq 的代码示例:

import scala.collection.JavaConverters._

val scalaSeq: Seq[String] = javaList.asScala.toSeq

方法4:使用 Java stream 转换

Java 8 引入了 stream API,也是一个将 Java 集合转换为 Scala Seq 的好方法。Stream API 可以直接在 Java List 上调用 stream() 方法生成流对象,然后调用 toList() 方法将 Java List 转换为 Seq。 下面是示例代码:

import scala.collection.JavaConverters._

val scalaSeq: Seq[String] = javaList.stream().filter(item => item != null).map(item => item.toString).collect(Collectors.toList[String]).asScala.toSeq

结论

无论你是使用 JavaConversions,手动遍历,JavaConverters 还是 Java stream,都能将 Java List 转换成 Scala Seq。当然,你仍然可以选择从Scala内置的List类型,或是使用Java 8中也提供了很多很好用的API,很多时候也可以直接不用转换。如果你想要进一步了解这个话题,可以到 Kotlin/Java/Scala 交流群里向其他开发者请教。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Scala 示例