编程知识 购物 网址 新闻 笑话 | 软件 日历 阅读 图书馆 China 头条阅读 学淘股 China Travel
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> Scala -> scala学习之第二天:可变容器与不可变容器的特性与应用 -> 正文阅读

[Scala]scala学习之第二天:可变容器与不可变容器的特性与应用

1、具体的不可变集合实体类
List(列表)
是一种有限的不可变序列式。提供了常数时间的访问列表头元素和列表尾的操作,并且提供了常数时间的构造新链表的操作,该操作将一个新的元素插入到列表的头部。其他许多操作则和列表的长度成线性关系。
List有两种构造方式:一种是通 ::操作符,另一种是 aply()

/* ---示例代码----*/
scala> val list = 1 ::(2::(3::Nil))
list: List[Int] = List(1, 2, 3)
scala> val list:List[Int] = List(1,2,3,4)
list: List[Int] = List(1, 2, 3, 4)
/* ---示例代码----*/

  
Stream(流)
stream结构可以无限长。stream被定义为懒惰计算,其toString方法被设计为不去做任何额外的东西。

/* ---示例代码----*/

scala> val str = 1 #:: 2 #:: Stream.empty
str: scala.collection.immutable.Stream[Int] = Stream(1, ?)

scala> val str = Stream(1,2,4)
str: scala.collection.immutable.Stream[Int] = Stream(1, ?)

scala> def fibFrom(a:Int, b:Int) :Stream[Int] = a #:: fibFrom(b,a+b)
fibFrom: (a: Int, b: Int)Stream[Int]

scala> val fibs = fibFrom(1,1).take(10)
fibs: scala.collection.immutable.Stream[Int] = Stream(1, ?)

scala> fibs.toList
res1: List[Int] = List(1, 1, 2, 3, 5, 8, 13, 21, 34, 55)

/* ---示例代码----*/

  
Vector(向量)
vector向量是线性序列与索引序列的折中,使线性序列能够更加高效随机访问列表,Vector的结构是不可变的,每次update操作都需要重新创建一个新的Vector。
由于vector在快速随机选择和快速随机更新的性能方面做到很好的平衡,所以它目前正被用作不可变索引序列的默认实现方式。

/* ---示例代码----*/

scala> val vector = Vector(1,2,45,5)
vector: scala.collection.immutable.Vector[Int] = Vector(1, 2, 45, 5)
scala> vector.updated(2,3)
res4: scala.collection.immutable.Vector[Int] = Vector(1, 2, 3, 5)
scala> vector
res5: scala.collection.immutable.Vector[Int] = Vector(1, 2, 45, 5)

scala> collection.immutable.IndexedSeq(1, 2, 3)
res2: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3)

/* ---示例代码----*/

  
2、具体可变容器类
ArrayBuffer
数组缓冲可以进行高效的尾插数据。

/* ---示例代码----*/

scala> val buf = scala.collection.mutable.ArrayBuffer.empty[Int]
buf: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
scala> buf += 1
res32: buf.type = ArrayBuffer(1)

/* ---示例代码----*/

ListBuffer
ListBuffer与ArrayBuffer的区别在ListBuffer内部实现是链表而非数组
群名称:开发交流学习
群   号:45514590
  Scala 最新文章
找出共同好友
Error when sending message to topic test
kafka 的 createDirectStream
Scala类型系统(sudden thought)
spark
R的两均值比较检验(非参数检验)
IDEA 中scala 程序运行时的错误:报错 test
为什么要创建开放源码的PlayScala社区?
scala学习手记36
play for scala 在模板中格式化Date
上一篇文章      下一篇文章      查看所有文章
加:2016-11-07 17:12:15  更:2017-05-16 01:45:29 
 
360图书馆 软件开发资料 购物精选 新闻资讯 Chinese Culture 三丰软件 开发 中国文化 阅读网 头条阅读 学淘股 China Travel 日历 万年历 2020年2日历
2020-2-22 17:03:46
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识