Scala 将Java中的double集合转换为Scala中的Iterable的程序
当我们需要在Java中使用Scala的某些库时,例如Scala集合库,往往需要将Java的集合或数组转换为Scala的集合或数组。以下是一种将Java中的List<Double>
转换为Scala中的Iterable[Double]
的方法。
import java.util.List;
import scala.collection.JavaConverters;
import scala.collection.immutable.List;
List<Double> javaList = Arrays.asList(1.0, 2.0, 3.0);
Iterable<Double> scalaIterable = JavaConverters.asScalaIterable(javaList).toList();
以上代码中,首先将Java的List<Double>
转换为Scala的Iterable[Double]
,然后通过toList()
方法将其转换为Scala中的不可变列表List[Double]
。此时,Scala中已经可以使用List
的各种方法。
示例
下面是一个完整的示例,我们使用Java中的java.lang.Math
库中的pow
方法,计算给定数组中所有元素的平方和,并将结果打印出来。
import java.util.Arrays;
import java.util.List;
import scala.collection.JavaConverters;
import scala.collection.immutable.List;
public class Main {
public static void main(String[] args) {
List<Double> javaList = Arrays.asList(1.0, 2.0, 3.0);
Iterable<Double> scalaIterable = JavaConverters.asScalaIterable(javaList).toList();
double sumOfSquares = scala.collection.JavaConversions.asJavaIterable(scalaIterable).stream()
.map(x -> Math.pow(x, 2)).reduce(Double::sum).orElse(0.0);
System.out.println("The sum of squares is " + sumOfSquares);
}
}
执行以上代码,输出结果为:
The sum of squares is 14.0
结论
通过JavaConverters
类,我们可以方便地将Java的集合或数组转换为Scala的集合或数组,从而可以在Java中使用Scala的各种库和函数式编程范式。