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

学习了Scala中List的Scala中List和ListBuffer设计实现思考,scala list 内部很多操作是listbuffer做的,因为改变元素,listbuffer非常高效,我们看见tl是var类型的  ,但是他属于scala包及子包,我们看上去是可变的,但是由于包 的限制我们看不到。

list列表 追加元素,如果tl前面没有 private[scala],可以改变除了第一个元素,其他所有元素构建的list,因为我们有同样的 tl,追加不同的元素,构造不同的列表,可以共享case  class ::,操作尾部的列表 ,指向同样的数据结构。

例子如下

Final case class :: [B](private var hd:B,private[scala] val tl: List[B])extend list[B]{

Override def head :B=hd

Override def tail : List[B]=tl

Override def isEmpty: Boolean= fales}

王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第84讲:Scala中List和ListBuffer设计实现思考
百度云盘:http://pan.baidu.com/s/1c0FGBzq
360云盘:http://yunpan.cn/cdRp6eTd95umJ 访问密码 45c3
腾讯微云:http://url.cn/cF431X

时间: 2024-10-25 20:42:11

Scala中List的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深入浅出实战经典《第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深入浅出实战经

Swift中的类似scala的foldleft方法的实现

extension Array {     func foldLeft(a:T, action:(T, T)->T)->T {         var ret:T = a         for b:T in self {             ret = action(ret,b)         }         return ret     } } 把这个放到项目当中任何一个swift文件当中,即可全局访问. 示例: 求最小值 var t = [1,3,5,4,9,100,6,-2]

[原创]Scala学习:编写Scala脚本

scala支持脚本 1)在/opt/scala-script下创建一个文件hello.scala 编辑内容如下: $ hello ,this is the first scala script 2)运行脚本 scala脚本的命令行参数保存在名为args的scala数组中.scala里,数组以0开始,可以通过在括号里指定索引值来访问数组元素.scala里数组 args 的第一个元素是:args(0),而不是像Java那样的:args[0].现在,把以下内容写到新文件: HelloWithArgs.

[Scala基础系列 04]Scala基本类型

1.Scala的数值类型 Scala的数值类型与Java类似,他们的范围与Java也是一致的.与Java不同的是,他们都是对象,是相应的数值类的实例.Scala通过富包装(Rich Wrapper)类给这些数值类型提供了强大的支持. 1.1.数值类型 Scala的数值类型和取值范围,见下表. Boolean: true 或者 false Byte: 8位, 有符号(2-7 ~ 27 - 1) Short: 16位, 有符号 (2-15 ~ 215 - 1) Int: 32位, 有符号 (2-31

Beginning Scala study note(8) Scala Type System

1. Unified Type System Scala has a unified type system, enclosed by the type Any at the top of the hierarchy and the type Nothing at the bottom of the hierarchy. All Scala types inherit from Any. # Using Any, Book extends AnyRef, and x is an Int that

ActionScript3.0教你在影片剪辑中访问主场景中的变量

在ActionScript2.0中,影片剪辑访问主场景中的变量非常的简单,仅仅需要用一个带有_root的绝对路径即可. 然而在ActionScript3.0影片剪辑中访问主场景中的变量却没有那么容易,使用root将会报错.下面为大家介绍一种非常简单的方法来访问主场景中的变量. 方法如下: 1.在MC(影片剪辑实例名称)里定义一个变量father:Object; 2.在主场景代码中进行赋值 MC.father = this; 3.在影片剪辑里访问的时候就直接 father.变量名 就行.

java程序练习:数组中随机10个数中的最大值

//定义输入:其实是一个可以保存10个整数的数组 //使用循环遍历,生成10个随机数,放入每个元素中//打桩,数组中的内容 //定义输出变量 //将数组中第一个元素取出,保存在max中,当靶子 //遍历数组,从第二个元素[1]开始,都和max比较 //如果任何元素超过max,就取而代之//输出max