在 Java 中将 scala Seq[Double] 转换为 Java List<Double>

我一直在处理这个问题,我想将 Scala 转换Seq[Double]为 Java List<Double>。我发现的所有内容都显示了如何从 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());
}

所以基本上,我将 scala 转换Seq为 Java List,对其进行流式传输,然后将 Scala 字符串转换Double为 Java Double。我尝试使用Double::box,但当我尝试这样做时,编译器拒绝编译。显然需要一个java.lang.Double

我想知道是否有更直接的方法来执行此操作,并希望将其记录下来以供将来参考。有什么建议么?


白衣非少年
浏览 135回答 2
2回答

隔江千里

Seq<scala.Double>据我所知,在 Java 中没有用(除非它在以后的 Scala 版本中发生了变化)。相反,ScalaSeq[Double]将具有Seq<Object>从 Java 中看到的类型。然而,它实际上会包含java.lang.Double对象,所以只是“作弊”@SuppressWarnings("unchecked")private&nbsp;void&nbsp;fun(Seq<Object>&nbsp;scalaSeq)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;List<Double>&nbsp;l&nbsp;=&nbsp;(List<Double>)&nbsp;(List<?>)&nbsp;JavaConverters.seqAsJavaList(scalaSeq); }或者@SuppressWarnings("unchecked") private&nbsp;void&nbsp;fun(Seq<Object>&nbsp;scalaSeq)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;List<Double>&nbsp;l&nbsp;=&nbsp;JavaConverters.seqAsJavaList((Seq<Double>)&nbsp;(Seq<?>)&nbsp;scalaSeq); }(所有Double的java.lang.Double)应该工作得足够好。

汪汪一只猫

你可以试试这个:.map(s->&nbsp;java.lang.Double.parseDouble(s.toString()));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java