基本介紹
1、Scala同時支持不可變集合和可變集合 ,Scala默認採用不可變集合,對於幾乎所有的集合類,Scala都同時提供了可變(mutable)和不可變(immutable)的版本
Scala的集合有三大類:序列Seq、集Set、映射Map,所有的集合都擴展自Iterable特質
不可變集合:scala.collection.immutable
可變集合: scala.collection.mutable
2、元組
創建var tup1 = 2 -> “two”
元組也是可以理解爲一個容器,可以存放各種相同或不同類型的數據。
訪問元組中的數據,可以採用順序號(_順序號),也可以通過索引(productElement)訪問。
遍歷需要調其迭代器
3、數組
定長數組
val arr1 = new Array[Int](10)
集合元素採用小括號訪問 arr1(1) = 7
for (i <- arr01) { //遍歷 println(i) }
或者使用下面這種方式定義定長數組
在定義數組時,直接賦值 val arr1 = Array(1, 2)
變長數組
val arr2 = ArrayBuffer[Int]()
//追加值, arr2.append(7)
//重新賦值 arr2(0) = 7
變長數組與定長數組的轉換
arr1.toBuffer //定長數組轉可變數組
arr2.toArray //可變數組轉定長數組
多維數組
val arr = Array.ofDim[Double](3,4)
4、列表
Scala的List可以直接存放數據,就是一個object,默認情況下Scala的List是不可變的,List屬於序列Seq。
val list01 = List(1, 2, 3) //創建時,直接分配元素
在列表的最後增加數據,val list2 = list1 :+ 4
在列表的最前面增加數據,val list2 = 4 +: list1
在列表的最後增加數據:
符號::表示向集合中 新建集合添加元素,運算時,集合對象一定要放置在最右邊,運算規則,從右向左,::: 運算符是將集合中的每一個元素加入到空集合中去。
ListBuffer是可變的list集合,可以 添加,刪除元素,ListBuffer屬於序 列
5、隊列
val q1 = new Queue[Int]
追加元素,q1 += 20; 追加list,q1 ++= List(2,4,6); 刪除元素,q1.dequeue(); 加入元素,q1.enqueue(9, 8, 7)
返回第一個元素,q1.head; 返回隊列最後一個元素,q1.last; 除了第一個以外剩餘的元素(尾部)q1.tail
6、映射map
Scala中不可變的Map是有序的,可變的Map是無序的
val map1 = Map("Alice" -> 10, "Bob" -> 20, "Kotlin" -> "北京")
取值,方式1-使用map(key);方式2-使用contains方法檢查是否存在key;方式3-使用map.get(key).get取值
添加map元素,增加單個元素map4 += ( "D" -> 4 )
刪除map元素,map4 -= ("A", "B")
遍歷,for ((k, v) <- map1) println(k + " is mapped to " + v)
7、集合
val set = Set(1, 2, 3)
添加,mutableSet.add(4) //方式1 mutableSet += 6 //方式2 mutableSet.+=(5) //方式3
刪除,set02 -= 2 // 操作符形式 set02.-=(4) // ok set02.remove("abc") // 方法的形式
遍歷,for (x <- set02) { println(x) }
基本使用
1、map映射操作
將集合中的每一個元素通過指定功能(函數)映射(轉換)成新的結果集合這裏其實就是所謂的將函數作爲參數傳遞給另外一個函數,這是函數式編程的特點
2、flatmap映射:flat即壓扁,壓平,扁平化映射
將集合中的每個元素的子元素映射到某個函數並返回新的集合。如果子元素是集合還將對這個子元素進行下一次遍歷。
3、filter:將符合要求的數據(篩選)放置到新的集合中
4、化簡, 也稱歸約
將二元函數引用於集合中的函數,reduceLeft。
5、摺疊
fold函數將上一步返回的值作爲函數的第一個參數繼續傳遞參與運算,直到list中的所有元素被遍歷。
foldLeft和foldRight 縮寫方法分別是:/:和:\
6、掃描
掃描,即對某個集合的所有元素做fold操作,但是會把產生的所有中間結果放置於一個集合中保存
7、拉鍊
兩個集合進行 對偶元組合並
8、迭代器
通過iterator方法從集合獲得一個迭代器,通過while循環或for表達式對集合進行遍歷.