Scala哪种数据结构对我的预期操作最有效?

时间:2015-06-17 17:12:34

标签: scala arraybuffer listbuffer

我正在运行一个动态编程函数,我在整个过程中都带有一个字符串列表。

随着时间的推移,我将新字符串附加到此列表的末尾,偶尔我可能会删除最后一个元素。现在我正在使用一个可变的ListBuffer,对附加执行+=,为删除执行.trimEnd(1)

一旦我的动态编程程序完成,我需要有效地能够访问该列表/序列/等的每个元素,并按顺序(我插入的第一个项目将首先被访问,而我插入的最后一个项目将是最后一次访问)。

我也试过ArrayBuffers但它们看起来都太慢了。我正在努力加快这个过程,我想知道我是否正在使用一个具有O(n)操作的数据结构,当有可能有我需要的O(1)时间操作时。

1 个答案:

答案 0 :(得分:2)

一个简单的单链表将为你描述的附加/丢弃部分提供O(1)。最糟糕的情况是,如果您需要在处理之前在结尾处反转列表,那么这将是一次支付的O(n)操作。

请注意,如果你沿着这条路走下去,在积累阶段“第一个”和“最后一个”将被颠倒(你将通过获取列表的尾部来预先添加项目并删除第一个项目。)