java - 将 scala Seq[Double] 转换为 Java 列表在爪哇
问题描述
我一直在处理这个问题,我想将 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
?
我想知道是否有更直接的方法可以做到这一点,并想记录下来以备将来参考。有什么建议么?
解决方案
Seq<scala.Double>
据我所知(除非它在以后的 Scala 版本中改变),在 Java 中不会有用。相反,ScalaSeq[Double]
将具有Seq<Object>
从 Java 中看到的类型。但是,它实际上会包含java.lang.Double
对象,所以只是“作弊”
@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);
}
(所有Double
有java.lang.Double
)应该工作得很好。
推荐阅读
- python - "module 'torchtext.data' has no attribute 'Field'"
- javascript - how to call a function with a submit element
- android - HDR gradient on Android not possible?
- math - 将平面转换为 XY 平面
- sql - 获取 Time 的每日行数
- entity-relationship - 具有两个参与者的 ER 建模帐户交易
- c++ - 调用包含的对象函数时,std::optional 是否转发右值?
- php - 我正在关注 Laminas MVC 教程,我创建的 Routs 返回 404 错误而不是相关视图
- android - 使用数据库中的数据绘制图形
- java - 有没有一种简单的方法可以打破 if 语句,比如 for 或 while 循环?