【发布时间】:2020-07-15 18:18:23
【问题描述】:
目前在我的应用程序中,我使用var fooSeq: Seq[Foo] = Seq.empty,然后使用:+ 附加项目。我知道这可能会导致多线程问题和潜在的竞争条件,但到目前为止还没有任何问题。
我最近发现了Seq.newBuilder(),似乎这可能是使用 Scala 序列的首选方式。我想知道性能优势是否优于使用 vars,以及它可能带来的任何其他类型的好处
【问题讨论】:
-
所有构建器都将是命令式和增量式构建集合的最快方式。但是,除非包含在单个方法的范围内,否则它们的可变性可能是危险的。另外,另一个问题是builder不是collection,所以你必须调用
result()(我相信是这样调用的) i> 最后,所以你不能使用中间步骤;您可以在var中使用不可变集合。