我一直在處理這個問題,我想將 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); }
(所有Double
的java.lang.Double
)應該工作得足夠好。
添加回答
舉報
0/150
提交
取消