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
不同,因为前者是基于数组的索引集合,具有恒定时间索引,而后者是链接 具有线性时间索引的列表集合。
所以,如果我想在一个序列中存储 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
不同,因为前者是基于数组的索引集合,具有恒定时间索引,而后者是链接 具有线性时间索引的列表集合。