Scala中List的ListBuffer实现高效遍历

今日【DT大数据梦工厂视频】《第82讲:Scala中List的ListBuffer是如何实现高效的遍历计算的?》
土豆视频:http://www.tudou.com/programs/view/WBW9Ki9Y_1g/

优酷视频:http://v.youku.com/v_show/id_XMTMwNTk0NjUwNA==.html?from=y1.7-1.2

56网视频:http://www.56.com/u63/v_MTM4MzM3MTk2.html

(DT大数据梦工厂scala的所有视频、PPT和代码在百度云盘的链接:http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group)
本视频由王家林老师通过代码实战的方式深入浅出的讲解了
Scala中List的ListBuffer是如何实现高效的遍历计算的。本视频的主要内容如下:
List与ListBuffer和java中的String与StringBuffer的设计很相似,
List与String设计默认是不可变的,var list = List[XX]形式生成的list虽然有var作修饰,
但类型认为immutable,向其中添加元素时,会有很多中间变量产生,空间浪费很大。
相比较而言,ListBuffer类型本可以在添加元素时避免中间变量的产生,省空间,避免频繁的GC。
王家林老师qq群462923555 微信号18610086859

时间: 2024-10-23 21:53:15

Scala中List的ListBuffer实现高效遍历的相关文章

Scala中List和ListBuffer设计实现思考

今日[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)百度云盘:http://pan.baidu.com/s/1c0FGBzq36

Scala中List的Scala中List和ListBuffer设计实现

学习了Scala中List的Scala中List和ListBuffer设计实现思考,scala list 内部很多操作是listbuffer做的,因为改变元素,listbuffer非常高效,我们看见tl是var类型的  ,但是他属于scala包及子包,我们看上去是可变的,但是由于包 的限制我们看不到. list列表 追加元素,如果tl前面没有 private[scala],可以改变除了第一个元素,其他所有元素构建的list,因为我们有同样的 tl,追加不同的元素,构造不同的列表,可以共享case

Scala深入浅出实战经典《第84讲:Scala中List和ListBuffer设计实现思考》笔记

感觉视频时间比较短,不过对于上班狗来说还比较适合,地铁上听一遍,回来做笔记时可以再听一遍,啦啦啦... 第84讲:Scala中List和ListBuffer设计实现思考 Goal:从case class::[B]出发思考 List, ListBuffer的设计 Gains: 1) case calss ::[B] 中虽然用的是var(可变),但是有private[scala]的限制: 如果没有改限制,可以改变除首元素外的其他元素,对共享数据带来麻烦. 2)保证scala元素本身操作的高效性,外部

王家林亲授《DT大数据梦工厂》第84讲:Scala中List和ListBuffer设计实现思考

我一直觉得Scala里的List设计的很诡异,今天阅读了王家林老师的 <第84讲:Scala中List和ListBuffer设计实现思考 >, 然后我就豁然开朗了. Scala的List是immutable的,因此将其声明为var, 有了这个隐式转换,操作ResultSet就变简单了. =============================================================== 王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经

第84讲:Scala中List和ListBuffer设计实现思考

今天来学习了scala中的list和ListBuffer scala list 内部很多操作是listbuffer做的,因为改变元素,listbuffer非常高效,tl是var类型的  ,但是他属于scala包及子包,我们看上去是可变的,但是由于包的限制我们看不到.list列表 追加元素,如果tl前面没有 private[scala],可以改变除了第一个元素,其他所有元素构建的list,因为我们有同样的 tl,追加不同的元素,构造不同的列表,可以共享case  class ::,操作尾部的列表

第82讲:Scala中List的ListBuffer是如何实现高效的遍历计算的?

今天学习下list中的ListBuffer实现的高效计算.让我们先来看下代码 def main(args:Array[String]){        val list = List(1,2,3,4,5,6,7,8,9)    increment(list)    increment_MoreEffective(list)    increment_MostEffective(list)  }    def increment(list:List[Int]):List[Int] = list m

Scala深入浅出实战经典 第82讲:Scala中List的ListBuffer是如何实现高效的遍历计算的?

package com.dt.scala.list object ListBuffer_Internals { def main(args: Array[String]) { val list = List(1,2,3,4,5,6,7,8,9) increment(list) increment_MoreEffective(list) increment_MostEffective(list) } def increment(list: List[Int]): List[Int] = list

Scala 深入浅出实战 第84讲:Scala中List和ListBuffer设计实现思考 学习后感

final case class ::[B](private var hd: B, private[scala] var tl:List[B]) extends List[B] tl通过private限制访问的目的是保证tl的不可变性,这样在构建头元素hd不同的而后面list相同的新的list的时候就可以直接指向tl,高效. 这里既保证了函数式编程,又能高效的创建新的对象. 兴趣的朋友请关注DT大数据梦工厂微信公众账号:DT_Spark 王家林老师微信号:18610086859 QQ群: DT大

第87讲:scala中使用For表达式做查询

今天我们来学习下如何用for表达式在scala中做查询. 先来看看示例代码 case class Book(title:String,authors:List[String]) object text_87 {   def main(args:Array[String]){ val books:List[Book] = List( Book("scala programming",List("zhangbanner","dongxicheng",