簡體   English   中英

如何將java.util.List [java.lang.Double]轉換為Scala的List [Double]?

[英]How to convert java.util.List[java.lang.Double] to Scala's List[Double]?

我想以一種有效的方式將Java double的Java列表(java.util.List [java.lang.Double])轉換為Scala double的Scala列表(List [Double])。

目前,我正在映射將每個Double值轉換為Scala Double的列表。 我寧願不要映射每個值,而是在尋找一種更有效的方法。

import collection.JavaConversions._
import collection.mutable.Buffer

val j: java.util.List[java.lang.Double] = Buffer(new java.lang.Double(1.0), new java.lang.Double(2.0))
val s: List[Double] = ...

我看過文檔來自Scala-> Java,但從其他方面來看並沒有太多。

建議使用JavaConverters而不是JavaConversions

import collection.JavaConverters._
import scala.collection.breakOut
val l: List[Double] = j.asScala.map(_.doubleValue)(breakOut)

doubleValue會將其從java.lang.Double轉換為scala.Double breakOut告訴它生成一個List作為map的結果,而不必遍歷遍歷以轉換為List 如果您不在乎多余的遍歷,也可以只執行toList而不是breakOut

Java類與Scala類完全不同。 這不僅是改名。 因此,不進行遍歷就不可能轉換。 您必須創建一個全新的集合,然后查看每個元素,以便對其進行(轉換並)移動。

類型不同的原因是java.lang.Double是“裝箱原語”,而scala.Double等效於Java的double原語。 這里的轉換本質上是對原語進行“拆箱”。

import collection.JavaConverters._

val javaList : java.util.List[Double] = ...
val scalaList : List[Double] = j.asScala.toList

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM