第84讲:Scala中List和ListBuffer设计实现思考学习笔记
本讲对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中的List和ListBuffer与java中的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
scala第83讲视频观看链接:
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)