Scala 中大量整数的可变索引序列?

Mutable, indexed sequence for a large amount of integers in Scala?

所以,如果我想在一个序列中存储 5 个零,然后通过它们的索引号访问它们,我应该在 Scala 中使用什么类型的序列?

在 Python 我会做这样的事情:

listTest = list(0,0,0,0,0)
listTest[1] = 3
print(listTest)

-> 0,3,0,0,0

我意识到类似的问题可能已经得到回答。可能是我不知道找到合适的关键字。

Collections performance characteristics 列出了以下在 constant time

中可变且可索引的序列
ArrayBuffer
ArraySeq
Array

请注意文档如何将索引称为 应用。这样做的原因是在 Scala 中元素是通过 apply 方法访问的,就像这样

val arr = ArrayBuffer(11, 42, -1)
arr.apply(1) // 42 
arr(1)       // sugared version of arr.apply(1) so also evaluates to 42

要决定使用哪一个,请考虑

  • Array vs ArraySeq

作为旁注,Python 的 list 在概念上与 Scala 的 List 不同,因为前者是基于数组的索引集合,具有恒定时间索引,而后者是链接 具有线性时间索引的列表集合。