Scala中List的实现内幕源码揭秘
2015-08-11 08:48
211 查看
学习了Scala中List的实现内幕源码揭秘,ListBuffer(链表缓存)相当于List的一个工具类,List本身继承ListBuffer,拥有ListBuffer中非私有的方法。对List的操作其实有部分是通过ListBuffer完成的。exported为LiftBuffer中flag(default:false),当flag为true时,表明Buffer已进行了toList操作,此时再进行连接等操作时,会有copy链表的动作发生,消耗内存,在实际编程中应谨慎。
例子如下:
private var start:List[A] = Nil
private var last0: ::[A]=_
private exported:Boolean = false
private var len = 0
override def toList:List[A]={
exported = !start.isEmpty
start
}
def +=(x:A): this.type = {
if(exported)copy()
.....
}
王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第83讲:Scala中List的实现内幕源码揭秘
百度云盘:
http://pan.baidu.com/s/1sJWxo 360云盘:
http://yunpan.cn/cdPEbk8TREFgt 访问密码 f2eb
例子如下:
private var start:List[A] = Nil
private var last0: ::[A]=_
private exported:Boolean = false
private var len = 0
override def toList:List[A]={
exported = !start.isEmpty
start
}
def +=(x:A): this.type = {
if(exported)copy()
.....
}
王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第83讲:Scala中List的实现内幕源码揭秘
百度云盘:
![](file:///C:\Documents and Settings\Administrator\Application Data\Tencent\QQ\Temp\8LDO48C$8@[GWU0353$FOVS.png)
![](file:///C:\DOCUME~1\ADMINI~1\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.png)
![](http://images0.cnblogs.com/blog2015/783105/201508/110847561297320.png)
相关文章推荐
- Rolling Hash(Rabin-Karp算法)匹配字符串
- 二级联动下拉列表框选中值后,保存id,name值的方法
- 基于codeMirror的实时在线编辑器
- iOS之TableView左划删除与刷新单挑数据
- SwipeRefreshLayout完美添加及完善上拉加载功能
- GCD线程之间的通信
- UISearchBar控件UI操作
- 创建XML的用法
- removeLineEndSpace
- 常用shell脚本片段
- rpm的一些安装站点
- 最小生成树(普利姆算法、克鲁斯卡尔算法) .
- 星际争霸II 战斗问题
- POJ 题目3321 Apple Tree(线段树)
- Jquery 如何获取表单中的全部元素的值
- swift_将UIDatePicker到达的传播之间的时间差在数小时出现页面的事
- 自定义cell
- 【Latex】正文中用Bibtex管理参考文献的一个demo
- eXtremeDB Log 在多进程是使用注意事项
- ajax提交表单无法验证easyui的验证选项(比如required等)