Scala高階 函式練習

2021-09-27 04:26:24 字數 4610 閱讀 6916

可以對整個集合進行操作,比如

建立乙個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 將函...