为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣非少年 2023-10-12 16:43:03
我一直在处理这个问题,我想将 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?我想知道是否有更直接的方法来执行此操作,并希望将其记录下来以供将来参考。有什么建议么?
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

Seq<scala.Double>据我所知,在 Java 中没有用(除非它在以后的 Scala 版本中发生了变化)相反,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);
}

(所有Doublejava.lang.Double)应该工作得足够好。


查看完整回答
反对 回复 2023-10-12
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

你可以试试这个:

.map(s-> java.lang.Double.parseDouble(s.toString()));


查看完整回答
反对 回复 2023-10-12
  • 2 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信