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

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值