目前我尝试在MutableList上使用map函数,因为它会更优雅,然后使用for循环迭代,imho。
当我执行以下操作时:
scala> ml
res2: scala.collection.mutable.MutableList[Double] = MutableList(1.0, 2.0)
所以我有一个像这样的MutableList,现在我做了:
scala> ml.map{ t:(Double) => t+0.2}
res3: scala.collection.mutable.LinearSeq[Double] = MutableList(1.2, 2.2)
我得到了一个LinearSeq。我想要一个MutableList。 我假设MutableLists上的map函数不是正确的方法吗?或者有一种从LinearSeq到MutableList的简单方法吗?
答案 0 :(得分:1)
可变列表
MutableList由单个链表和指针组成 它指的是该列表的终端空节点。这就是列表 附加一个恒定时间操作,因为它避免了必须遍历 搜索其终端节点的列表。目前是MutableList Scala中mutable.LinearSeq的标准实现。
意味着返回的LinearSeq
实际上是作为MutableList
=>实现的相同的访问时间
答案 1 :(得分:1)
正如pagoda_5b所述,mutable.LinearSeq
将允许与MutableList
相同的操作。通常,您应该直接实例化特征。例如,如果您想要:
同样值得注意的是,虽然MutableList
和LinearSeq
都有head
个访问时间,但两者都没有随机访问时间,即调用linearSeq(n)
将完全n次调用head
返回。
如果您想要可变版本,只需添加import scala.collection.mutable
并使用mutable.Seq()
即可。 (从技术上讲,你可以import scala.collection.mutable.Seq
,但是将所有可变集合作为包名称加上前缀被认为是良好的编码风格)