可以對整個集合進行操作,比如
建立乙個seq列表,然後用map對集合*2
val salaries =
seq(2,
3,4,
5)val newsalaries = salaries.
map(_*
2)
faltmap函式是map一種擴充套件,faltmap中傳入乙個函式,該函式對每個輸入都會返回乙個集合,然後,會把多個集合「拍扁」成乙個集合
val words =
seq(
"h e l l o"
,"w o r l d"
) val resule = words.
faltmap
(_.split
(" "
)println
(result)
結果:list
(h, e, l, l, o, w, o, r, l, d,
-, w,
-e, w)
redce 函式可以對集合當中的元素進行歸約操作,下劃線是佔位符,兩個下劃線表示歸約的規則是使用前後兩個元素,中間加號,用來表示對元素的操作
不指定reduce是left還是right,預設情況是reduceleft
//reduce函式
val list =
list(1
,2,3
,4,5
)
val result = list.
reduce
(_+_)
println
("result:"
+ result)
foreach函式與map相似,都是遍歷集合物件,並對每一項執行指定的方法。區別在於foreach無返回值,map返回乙個list
val list =
list(1
,2,3
) list.
foreach
(println)
groupby 函式將列表進行分組,分組依據是應該groupby函式中的函式的返回值,可以看到結果是返回乙個map集合
val list =
list
("a"
,"b"
,"c"
,"d"
) val result = list.
groupby
(x=>})
println
(result)
結果:hashmap(1
->
list
(a, b),2
->
list
(c, d)
)
val seq =
seq(
(100
,"chun1"),
(99,"chun2"),
(60,"chun3"))
val result1 = seq.
groupby
(_._2)
println
(result1)```
結果:hashmap
(chun3 -
>
list((
60,chun3)
), chun2 -
>
list((
99,chun2)
), chun1 -
>
list((
100,chun1)
))
//元祖
val t =(31
,"chun1",18
)println
("id:"
+t._1)
println
("name:"
+t._2)
println
("age:"
+t._3)
結果:id:31
name:chun1
age:
18
篩選出列表中符合條件的元素、
//filter函式
val list =
list(1
,2,3
,4,5
) val newlist = list.
filter
(_>3)
println
(newlist)
結果:list(4
,5)
count函式計算列表中滿足條件的元素個數
//count函式
val list =
list(1
,2,3
,4,5
,6) val newlist = list.
count
(_>3)
println
(newlist)
結果:2
soryby函式用於通過他的型別對乙個屬性或者多個屬性進行排序
//soryby函式
val list =
list(2
,3,4
,1,5
,6) val newlist = list.
sortby
(x =
> x)
println
(newlist)
結果:list(1
,2,3
,4,5
,6)
diff函式儲存列表中那些不在另乙個列表中的元素,即從集合中減去另乙個集合的元素後得到乙個新的集合
//diff函式
val list =
list(1
,2,3
,4,5
,6) val list1 =
list(1
,2,3
,4) val newlist = list.
diff
(list1)
println
(newlist)
結果:list(5
,6)
//union函式或者++
val list1 =
list(1
,2,3
,4,5
) val list2 =
list(6
) val newlist = list1.
union
(list2)
val newlist2 = list1++list2
println
(newlist)
println
(newlist2)
//intersect函式
val set1 =
set(1,
2,3,
4)val set2 =
set(1,
2,5,
6)val newset = set2 & set1
val newset1 = set1 intersect set2
println
(newset1)
println
(newset)
結果:set(1
,2)set(1
,2)
提取列表前n個元素
//take函式
val list =
list(1
,2,3
,4,6
,3,5
) val takelist = list take 2
val takelist2 = list.
take(5
)println
(takelist)
println
(takelist2)
結果:list(1
,2)list(1
,2,3
,4,6
)
//drop函式
val list =
list(1
,2,3
,4,5
,6) var droplist = list drop 2
println
(droplist)
結果:list(3
,4,5
,6)
//partition函式
val list =
list(1
,2,3
,4,5
,6,7
,8) val lists = list.
partition
(_%2==0
)println
(lists)
println
(lists._2)
結果:(
list(2
,4,6
,8),
list(1
,3,5
,7))
list(1
,3,5
,7)
scala高階函式練習
1 獲取元素中每個元素的長度 val datas array spark hello scala python object test01 def testone datas array string func string any 了解更過scala函式簡寫規則scala函式簡寫規則 2 對陣列中...
Scala高階函式
在scala中,無法直接操縱方法,只能直接操縱函式,所以需要使用 import scala math.val temp ceil val num 3.14 println fun temp num temp的型別是 double double,意為接受double引數並返回double的函式。能夠對...
Scala 高階函式
import scala.math.val num 3.14val func ceil 意味著確實指的是這個函式,而不是忘記了傳引數 func是乙個函式變數,內容儲存的是個函式 val v func num println v val arr array 1.0,3.14,4 map func 將函...