第83讲:Scala中List的实现内幕源码揭秘学习笔记
本讲主要讲解List实现的具体内部的关键源码
上讲讲了listbuffer对list的高效遍历,解决了堆栈溢出的问题和使用遍历时的效率问题
scala中的list在后来的版本中都采用了这种方法。
toList不会低效,ListBuffer最后 一个元素是List的最后一个元素,
/*Converts this buffer to a list.Takes constant time. The buffer is
copied lazily, the first time it is mutated.*/
override def toList: List[A] = {
exported = !start.isEmppty
start //只是返回start,基本不耗时间。start指向元素列表
}
//Listd take(n:Int)源码:
override def take(n:Int):List[A]={
val b = new ListBuffer[A]
var i= 0
var these = this