Scala使用非常大的列表

时间:2013-01-10 13:29:03

标签: scala scala-collections

我有一个大约1176 ^ 3个职位的名单。 像smth一样

val x = list.length

需要几个小时..

当列表中1271256个位置没问题时,只需几秒钟。 任何人都知道如何加快它?

2 个答案:

答案 0 :(得分:9)

List可能是长度操作的错误数据结构,因为它是O(n) - 完成时间越长,列表就越长。

如果您需要调用length

Vector可能是一个更好的数据结构,因为它的存储在有限的时间内支持随机访问。

当然,这并不意味着List是一个糟糕的结构,只是在这种情况下它可能不是优选的。

答案 1 :(得分:1)

要添加到gpampara的答案,在这样的情况下,您实际上可以证明使用数组的合理性,因为它具有最低的每个项目的开销和O(1)访问元素和长度确定(因为它记录在数组头本身。)

数组有许多缺点,但我认为当内存开销是主要考虑因素时是合理的(并且当创建时已知大小的固定大小的集合是可行的)。