【发布时间】:2017-01-01 11:08:06
【问题描述】:
当我从 Java List 转换为通用 Scala Seq 时,我想更好地了解这段代码中实际发生的情况:
import scala.collection.JavaConverters._
def foo(javaList: java.util.List[String]): Seq[String] = {
val scalaMutableBuffer: mutable.Buffer[String] = javaList.asScala
scalaMutableBuffer
}
...
val bar = foo(someJavaList)
我是否正确理解,虽然bar 被键入为Seq[String],但它在底层使用可变缓冲区,可能会影响 Seq 操作的性能? Seq 是通过 Seq 特征的约束简单地引用缓冲区,还是存在实际的底层转换?最好将 bar 包含的值视为可变或不可变?
请原谅这个问题的开放性,但我觉得我不知道发生了什么,我想改变它。例如,在从foo返回之前,我是否最好转换scalaMutableBuffer toList?
谢谢!
【问题讨论】:
标签: java scala type-conversion mutable seq