scala - 为什么在 ArrayBuffer 上调用 "tail"需要线性时间?

标签 scala data-structures

支票:http://www.scala-lang.org/docu/files/collections-api/collections_40.html

它说 ArrayBuffer 在请求尾部时需要线性时间。但是,附加时要快得多

我的理解是 ArrayBuffer 只是一个动态数组。

为什么追加是摊销常数时间,但获得最后一个元素需要线性时间?

最佳答案

tail不是最后一个元素,它是第一个元素之外的所有元素。你要last .

Seq('a', 'b', 'c').head  // 'a'
Seq('a', 'b', 'c').tail  // Seq('b', 'c')
Seq('a', 'b', 'c').init  // Seq('a', 'b')
Seq('a', 'b', 'c').last  // 'c'

关于scala - 为什么在 ArrayBuffer 上调用 "tail"需要线性时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24477094/

相关文章:

data-structures - 当我们有二叉搜索树时,为什么还需要二叉堆?

linux - 在没有 super 用户权限的情况下,Scala shell 无法在 ubuntu 上运行

mysql - Slick 3 截断表进行测试

inheritance - “特征A <:B”是什么意思?

scala - 我怎样才能惯用 "remove"Scala 列表中的单个元素并缩小差距?

scala - 读取向量时如何返回选项

algorithm - 懒惰酒保算法

algorithm - 把N block 蛋糕分给M个人,浪费最少

c++ - Kd-Tree 有缺陷的 K 最近邻

java - 策略棋盘游戏 AI 的高效棋盘表示