Scala有一個非常通用,豐富,強大,可組合的集合庫;集合是高階的(high level)並暴露了一大套操作方法。
Scala的所有的集合類都可以在包 scala.collection 包中找到,其中集合類都是高級抽象類或特性
Iterable[T] 是所有可遍歷的集合,它提供了迭代的方法(foreach)。Seq[T] 是有序集合,Set[T]是數學上的集合(無序且不重複),Map[T]是關聯數組,也是無序的。
Scala 集合類系統地區分了可變的和不可變的集合。
可變集合可以在適當的地方被更新或擴展,意味著你可以修改、添加、移除一個集合的元素。
而不可變集合類,相比之下,永遠不會改變。不過,你仍然可以模擬添加,移除或更新操作。但是這 些操作將在每一種情況下都返回一個新的集合,同時使原來的集合不發生改變。
可變的集合類位於 scala.collection.mutable 包中,而不可變的集合位於 scala.collection.immutable 。
scala.collection 包中的集合,既可以是可變的,也可以是不可變的
官方文檔
http://www.scala-lang.org/docu/files/collections-api/collections.html
List集合
創建輸出
獲取頭部元素
獲取除去頭部元素之外的元素
獲取尾部元素
獲取除去尾部元素之外的元素
可以從頭拼接的方式創建集合
如果一直拼接創建集合(Nil可以理解為空串)
如果從尾到頭創建集合
遍歷for
如果更改元素會提示錯誤list4(0) = 100;
可變List
import scala.collection.mutable.ListBuffer
構建
添加元素,遍歷
給指定位置插入元素
刪除元素
直接刪除List
刪除指定位置的元素
獲取數據
更新數據
轉換
如果想用Java集合
把Java中List轉換為scala中List
import scala.collection.JavaConverters._
List中常見方法:
reverse
Zip方法
ZipAll
轉換range
Foreach遍歷,Foreach一般用於數據輸出,因為foreach沒有返回值
轉換為字符串
Map輸出
Map一般是對每一個元素進行處理的,是有返回值的
flatMap 對集合中每一個元素進行處理,使用給定函數,並且返回一個新的集合 是在map的基礎上進行了一次扁平化操作,不是把函數的返回值作為新集合的元素,而是把返回值中的元素作為新集合的元素
Filter數據過濾 對集合中的每個元素調用給定函數,如果函數執行返回值是true 就會保留,否則反之
FilterNot和上面相反
Reduce 數據聚合
Fold 數據聚合 和reduce區別是可以給一個初始值
FoldLeft 給定的初始值可以是任意類型
FoldRight
Sorted 對集合元素進行排序
sortBy 類似Sorted 區別在於sortBy根據函數的返回值排序
groupBy 按照給定的函數的返回值對數據進行分組操作,返回結果是Map集合
Set
1)無序不重複
2)+/++/-/-- 都會創造一個新的Set
3)+=/++=/-=/--= 不會創造一個新的Set
創建輸出
添加元素
++添加
-正好相反
Set的常用方法和List相似,可以作為練習網上查詢使用
訪問元素 Set中沒有專門的方式去訪問數據,因為是無序的
如果直接使用set(0) 是判斷0是否存在於set中
將List轉換為Set,完成去重
可變Set
import scala.collection.mutable._
有一個特殊的地方:一種特殊的添加元素的方式
Map
是一種Key-Value鍵值對集合
創建Map
數據讀取
Get方法
GetOrElse
可變Map
import scala.collection.mutable._
添加元素
更新操作,如果存在就更新,不存在就插入
遍歷
也可以直接key-value
其它用到時候再看
集合常用高階函數
閱讀更多 分享電腦學習 的文章