scala学习之第一天:总体概述

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)往往会比可变集合更加紧凑和高效。
 
 

开发交流学习

posted @ 2016-11-07 14:54  Showbt.com  阅读(701)  评论(0编辑  收藏  举报