将scala-Seq[Double]转换为Java列表<;双倍>;在爪哇

将scala-Seq[Double]转换为Java列表<;双倍>;在爪哇,java,scala,Java,Scala,我一直在处理这个问题,我想将ScalaSeq[Double]转换为Java列表。我发现的所有东西都显示了如何从Scala实现这一点,但我找不到如何从Java实现这一点 这就是我所拥有的: private void fun(Seq<scala.Double> scalaSeq) { List<java.lang.Double> l = JavaConverters.seqAsJavaList(scalaSeq).stream().map(a -> java.l

我一直在处理这个问题,我想将Scala
Seq[Double]
转换为Java
列表
。我发现的所有东西都显示了如何从Scala实现这一点,但我找不到如何从Java实现这一点

这就是我所拥有的:

private void fun(Seq<scala.Double> scalaSeq) {
    List<java.lang.Double> l = JavaConverters.seqAsJavaList(scalaSeq).stream().map(a -> java.lang.Double.valueOf(a.toString())).collect(Collectors.toList());
}
private void fun(Seq scalaSeq){
List l=JavaConverters.seqAsJavaList(scalaSeq).stream().map(a->java.lang.Double.valueOf(a.toString()).collect(Collectors.toList());
}
基本上,我将scala
Seq
转换为Java
列表
,在其上进行流式处理,然后将scala
Double
转换为Java
Double
。 我尝试改用
Double::box
,但我尝试时编译器拒绝编译。显然它需要一个
java.lang.Double

我想知道是否有一个更直接的方法来做这件事,并希望记录这一点,以供将来参考。有什么建议吗?

您可以尝试以下方法:

.map(s-> java.lang.Double.parseDouble(s.toString()));
据我所知,
Seq
在Java中不会有用(除非在以后的Scala版本中有所改变)。相反,Scala
Seq[Double]
将具有Java中的类型
Seq
。然而,它实际上将包含
java.lang.Double
对象,所以只需使用

@SuppressWarnings(“未选中”)
私人空间乐趣(Seq scalaSeq){
List l=(List)(List)JavaConverters.seqAsJavaList(scalaSeq);
}

@SuppressWarnings(“未选中”)
私人空间乐趣(Seq scalaSeq){
List l=JavaConverters.seqAsJavaList((Seq)(Seq)scalaSeq);
}

(所有的
Double
都有
java.lang.Double
)应该可以很好地工作。

您能补充一些关于您的解决方案的解释吗。真的有必要对字符串表示进行往返吗?我不确定使用
Double.parseDouble()
Double.valueOf()
有什么不同(如果有的话)。您能解释一下它是否更好吗?这两种方法都给了我一个编译错误:
不可转换类型;无法将java.util.List强制转换为java.util.List
。但是,根据您的建议,我管理了以下内容:
JavaConverters.seqAsJavaList(scalaSeq.stream().mapToDouble(a->Double.valueOf((Double)a)).boxed().collect(Collectors.toList())仍然很难看,但比我最初的方法要好实际上,
Double.valueOf()
是多余的,因为只要强制转换就足够了。啊,对了,你需要添加一个中间强制转换来避免这个问题。现在应该修好了。
@SuppressWarnings("unchecked")
private void fun(Seq<Object> scalaSeq) {
    List<Double> l = (List<Double>) (List<?>) JavaConverters.seqAsJavaList(scalaSeq);
}
@SuppressWarnings("unchecked")
private void fun(Seq<Object> scalaSeq) {
    List<Double> l = JavaConverters.seqAsJavaList((Seq<Double>) (Seq<?>) scalaSeq);
}