scala學習之第一天,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)往往會比可變集合更加緊湊和高效。
開發交流學習