第84讲:Scala中List和ListBuffer设计实现思考学习笔记

时间:2021-11-14 04:00:43

84讲:ScalaListListBuffer设计实现思考学习笔记

本讲对List ListBuffer的设计进行探讨和思考

List内部的操作很多是ListBuffer来做的。

因为改变元素时ListBuffer非常高效

 

@SerialVersionUID(0L - ....)

final case class ::[B](private var hd: B,private[scala] var tl: List[B] extends List[B]){

//如果没有private就会给共享数据带来很大麻烦。因为可以有同样的tail,却可以构造不同的列表。

  override def head : B = hd

  override def tail : List[B] = tl

  override def isEmpty: Bollean = false

 

//scala中的ListListBufferjava中的String/StringBuffer类似。

//String每次改变元素时会产生一个新的String

final class ListBuffer[A]

extends AbstractBuffer[A]

  with Buffer[A]

  with GenericTraversableTemplate[A,ListBuffer]

  with BufferLike[A, ListBuffer[A]]

  with Buffer[A, ListBuffer[A]]

  with SeqForwarder[A]

  with Serializable

{

  override def companion: GenericCompanion[ListBuffer] = ListBuffer

  import scala.collection.Traversable

 

  private var start: List[A] = Nil

  private var last0: ::[A] = _

  private var exported: Boolean = false

  private var len = 0

}

 

外在的函数式,内在的可变性是非常好的组合,

ListBuffer中的toList的方式可以非常化地变成List

 

以上内容是从王家林老师DT大数据课程第83讲的学习笔记。
DT大数据微信公众账号:DT_Spark  

王家林老师QQ:1740415547 

王家林老师微信号:18610086859
scala83讲视频观看链接:
http://yun.baidu.com/s/1sJWxo
我的百度网盘共享的DT大数据梦工厂王家林老师第1-85讲的视频内容:http://pan.baidu.com/s/1qWK9CMo

今日【DT大数据梦工厂视频】《第84讲:Scala中List和ListBuffer设计实现思考》
51CTO视频:http://edu.51cto.com/lesson/id-71363.html
土豆视频:http://www.tudou.com/programs/view/9vOkwWDGF6M/ 
(DT大数据梦工厂1至84讲scala的所有视频、PPT和代码在百度云盘的链接:http://url.cn/fSFPjS)