Scala的集合分爲可變集合與不可變集合,可變集合表示這個集合中的元素可被添加,更新,刪除。不可變集合表示對此集合操做之後會產生一個新的集合,而原來這個集合不改變。java
全部的集合都在scala.collection包下面而且分爲兩類
在scala.collection.mutable都是可變集合,在scala.collection.immutable裏都是不可變集合。app
這是scala.collection.immutable包下的集合的繼承關係ui
這是加入了scala.collection.mutable後全部集合的繼承關係spa
下面我介紹幾個經常使用的集合及操做scala
Traversable代表全部子類均可以被遍歷
lterable表示這些集合均可進行迭代操做
Set:無序元素
Seq:有序元素
Map:映射code
//兩種初始化List的方式,::能夠用來鏈接各元素 val fruit=1::2::3::Nil val animal=List("tiger","dog","pig") //兩個List能夠相連 val fa=fruit++animal //依次爲訪問List頭,尾元素,List是否爲空,查找List中指定元素的位置,根據索引(以0開始)訪問List fa.head fa.tail fa.isEmpty fa.indexOf(0) fa.apply(4) //根據特定條件過濾掉部分元素,注意fa並無改變,此時產生一個新的List val fa1=fa.filter(x=>x!=1) //將List每一個元素映射成另外一個元素 val fa2=fa.map(x=>x+"1") //flatMap將嵌套List變成一層List val fa3=List(1,2,3) //List(List(0, 1, 2), List(1, 2, 3), List(2, 3, 4)) val fa4=fa3.map(x=>g(x)) //List(0, 1, 2, 1, 2, 3, 2, 3, 4) val fa5=fa3.flatMap(x=>g(x)) //向左規約,即從最左邊其將第一第二個元素實行操做,並將操做結果 //當成下次操做的參數之一與三個元素實現操做,直到最右邊,結果是18 fa5.reduceLeft((x,y)=>x+y) //4表示初始值,y表示List中的下一個元素,x表示上次的結果,結果是10 val fa6=fa3.foldLeft(4)((x,y)=>x+y) ... ... def g(v:Int)=List(v-1,v,v+1)
//初始化語法 val things=("1",2,200.0) //取得tuple的第一個元素 things._1 //證實它是一個類,結果是class scala.Tuple3 things.getClass //使用模式匹配爲things元素命名,string對應的值就是"1" val (string,number,float)=things //遍歷輸出tuple中的每個元素 things.productIterator.foreach(println)
//初始語法 val map=Map(1->"J",2->"Z",3->"B") //指定key訪問元素 println(map(1)) //判斷Key是否在元素裏面 println(map.contains(4)) //Map中添加元素 map+(4->"Z") //Map中刪除元素 map-3 //添加多個元素 val map2=map++List(5->"W",6->"C") //刪除多個元素 val map1=map--List(1,2,3)