scala学习之第一天

来源:互联网 时间:2016-11-07

1、scala语言特性

简洁、易用、安全、快速、通用

2、集合

Scala集合类分为可变集合(scala.collection.mutable)和不可变集合(scala.collection.immutable)。可变集合是指对象可以对集合中的元素进行增加、修改和删除等操作;不可以变集合指集合一旦创建,集合里的元素将不可变;

默认情况下,scala一直采用不可变集合,如果需要使用可变集合,需要显示声明(scala.collection.mutable.具体类)

下面的图表显示了scala.collection包中所有的集合类。这些都是高级抽象类或特性,它们通常具备和不可变实现一样的可变实现。

下面的图表显示scala.collection.immutable中的所有集合类。

下面的图表显示scala.collection.mutable中的所有集合类。

 

集合的语法:

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

Map("x" -> 24, "y" -> 25, "z" -> 26)

Set(Color.red, Color.green, Color.blue)

List(1, 2, 3)

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

 


 

Trait Iterable

Iterable有两个方法返回迭代器:grouped和sliding

grouped方法返回元素的增量分块,sliding方法生成一个滑动元素的窗口。

如图:

容器合并:

xs zip ys:将xs 和 ys合并成到一个容器

xs zipAll (ys, x, y)

 

序列

序列中update与updated之间的区别:

update 在原来的基础上修改序列的元素,并且只适用于可变序列

updated 总是返回一个新的序列,适用于所有序列

 

LinearSeq与IndexedSeq的特性:

线性序列具有高效的head和tail操作,而索引序列具有高效的apply,length和update操作。常用线性序列有 scala.collection.immutable.List和scala.collection.immutable.Stream。常用索引序列有 scala.Array scala.collection.mutable.ArrayBuffer。

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

scala> var list=List()

list: List[Nothing] = List()

scala> 1+:list

res0: List[Int] = List(1)

scala> list :+2

res1: List[Int] = List(2)

scala> list.padTo(5,3)

res2: List[Int] = List(3, 3, 3, 3, 3)

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

 


 

集合

在集合中++、--与+=、-=的区别:

++、--操作符集合用于添加、删除元素,这些操作要通过集合拷贝来实现,效率低

+=、-=操作符是可变集合中用于添加、删除元素的操作符,s += elem,添加元素elem到集合s中,并返回产生变化后的集合作为运算结果。

目前可变集合默认使用哈希表来存储集合元素,非可变集合则根据元素个数的不同,使用不同的方式来实现。空集用单例对象来表示。元素个数小于等于4的集合可以使用单例对象来表达,元素作为单例对象的字段来存储。 元素超过4个,非可变集合就用哈希前缀树(hash trie)来实现。采用这种表示方法,较小的不可变集合(元素数不超过4)往往会比可变集合更加紧凑和高效。

 

 

开发交流学习

相关阅读:
Top