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

时间:2014-06-29 14:40:09

标签: scala data-structures

检查:http://www.scala-lang.org/docu/files/collections-api/collections_40.html

它表示ArrayBuffer在请求尾部时需要线性时间。但是,附加

时要快得多

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

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

1 个答案:

答案 0 :(得分:5)

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'