Eri*_*lts 7 java scala implicit-conversion
我想以有效的方式将Java双打的Java列表(java.util.List [java.lang.Double])转换为Scala双精度的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] = ...
Run Code Online (Sandbox Code Playgroud)
我已经看过来自Scala的文档 - > Java,但没有太多其他方式.
dhg*_*dhg 19
建议是使用JavaConverters,而不是JavaConversions:
import collection.JavaConverters._
import scala.collection.breakOut
val l: List[Double] = j.asScala.map(_.doubleValue)(breakOut)
Run Code Online (Sandbox Code Playgroud)
doubleValue将它从a java.lang.Double转换为a scala.Double. breakOut告诉它生成一个Listas的结果map,而不必再次遍历它转换为a List.你也可以做,toList而不是breakOut如果你不关心额外的遍历.
Java类与Scala完全不同; 这不仅仅是改变名称.因此,没有遍历就不可能进行转换.您必须创建一个全新的集合,然后查看每个元素以便(转换它)并将其移动.
类型不同的原因是java.lang.Double是一个"盒装基元",而scala.Double相当于Java的双基元.这里的转换基本上是"拆箱"原语.
| 归档时间: |
|
| 查看次数: |
6079 次 |
| 最近记录: |