scala 高級十六 scala 集合和集合的高級特性 map flatten fllatmap zip reduce zip 等操作
阿新 • • 發佈:2017-07-05
高級 類型 strong nbsp println 參數 highlight 匿名 pri
1. scala 的列表List 和集Set 的操作
//Set 和list 差不多,不過 Set 中不允許有重復的元素
var set=scala.collection.mutable.Set[Int]();
//+ 會產生一個新的對象,而不是在set 中動態增加
set.+(1)
//+= 會在原先的set 中動態的增加元素而不是產生一個新的對象。
set.+=(1,2,3)
//這個會輸出一個排序以後的 集合 比如 輸入 7,4,8,6,1 輸出 1,46,7,8
import scala.collection.mutable.SortedSet
var sort=SortedSet[Int]()
sort.+=(7,4,8,6,1)
sort.foreach(println)
2. 集合的函數組合子(Functional Combinators)
map
map
對列表中的每個元素應用一個函數,返回應用後的元素所組成的列表。
。
var lst=List(1,2,3,4) //Map 映射到list 集合中的沒一位,然後結構乘以2 lst.map((x:Int)=>x*2) //上一步的匿名函數簡化 去掉類型,系統推斷類型 lst.map(x=>x*2) //進一步簡化直接寫返回表達式 var li= lst.map(_*2) for(x<-li) println(x)
foreach
foreach
很像map,但沒有返回值。foreach僅用於有副作用[side-effects]的函數。
var lst=List(1,2,3,4) //用foreach 輸出list中的參數 lst.foreach((x:Int)=>{println(x*2)}) //精簡後的foreach lst.foreach(_*2)
filter
filter
移除任何對傳入函數計算結果為false的元素。返回一個布爾值的函數通常被稱為謂詞函數[或判定函數]。
var lst=List(1,2,3,4) //過濾>2 的所有蒜素 lst.filter((x:Int)=>x>2).foreach(println) //精簡後的結構 lst.filter(_>2).foreach(println)
flatten
flatten
將嵌套結構扁平化為一個層次的集合。
flatMap
flatMap
是一種常用的組合子,結合映射[mapping]和扁平化[flattening]。 flatMap需要一個處理嵌套列表的函數,然後將結果串連起來。
Reduce
reduece 下面的函數 通過reduce 把所有的參數相加
fold
fold 類似於reduce 不過不同的是 fold 需要兩個參數,一個參數用來設置偏移量, 比如下面的例子,偏移量是10 ,加上reduce 運算的10 得20
zip
zip
將兩個列表的內容聚合到一個對偶列表中。
sum,max,min 操作
scala 高級十六 scala 集合和集合的高級特性 map flatten fllatmap zip reduce zip 等操作