Scala語言基礎(三)練習

2021-09-30 01:17:11 字數 3474 閱讀 2163

object mutiltable 

println()}}}

簡寫

for

(i <

-1 to 9

; j <

-1 to i)

val array =

array

("hello huangbo"

,"hello xuzheng"

,"hello wangbaoqiang"

) val array2 =array.

map(

(x:string)

=> x.

split

(" "))

//拆分每個元素 array(array(hello, huangbo), array(hello, xuzheng), array(hello, wangbaoqiang))

val array3 = array2.flatten//將裡層陣列元素展開成外層陣列的元素array(hello, huangbo, hello, xuzheng, hello, wangbaoqiang)

val array4 = array3.

map(

(x:string)

=>

(x,1))

//轉變成鍵值對array((hello,1), (huangbo,1), (hello,1), (xuzheng,1), (hello,1), (wangbaoqiang,1))

val array5 = array4.

groupby

((x:

(string,int))=

> x._1)

//按照鍵分組map(xuzheng -> array((xuzheng,1)), huangbo -> array((huangbo,1)), wangbaoqiang -> array((wangbaoqiang,1)), hello -> array((hello,1), (hello,1), (hello,1)))

val array6 = array5.

map(

(x:(string,array[

(string, int)])

)=>

(x._1,x._2.length)

)//統計最後結果

println

(array6.tostring)

//map(xuzheng -> 1, huangbo -> 1, wangbaoqiang -> 1, hello -> 3)

array.

map(

(x:string)

=> x.

split

(" "))

.flatten.

map(

(x:string)

=>

(x,1))

.groupby

((x:

(string,int))=

> x._1)

.map

((x:

(string,array[

(string, int)])

)=>

(x._1,x._2.length)

)

a. 其中,array.map(x => x.split(" 「)).flatten效果和array.flatmap(x => x.split(」 "))一致:

b. 通過mapvalues方法,直接作用於map的value值,只改變value值到目標形式:

3)a. 先補充方法

fold,foldleft,foldright:第乙個括號是初始值,第二個括號中是聚合函式

fold和reduce相似,只是要傳入兩個引數,第乙個引數相當於sum

由下圖可以看出,fold和reduce是很相似的(同種型別情況下),fold第二個括號裡面必須是相同的型別最終返回的也是同種型別

而foldleft第二個括號中的連個引數第乙個必須是int型別的(因為它始終和第乙個括號中的數字相互賦值,所以必須與第乙個括號裡數值同種型別),y是輪詢集合裡面的元素,可以是其他型別

foldright則是x從右面輪詢集合裡面的元素

b. 如下圖所示,通過fold可以避免當(hello,3)等情況,不能使用陣列的長度來統計結果

將得到的結果按照統計的數值大小排序

先把map轉換為陣列

通過sorted方法排序

將按照list元素,即元組的第乙個元素按照字典順序排序

通過sortby方法排序

scala練習題 Scala基礎

1 在scala repl中,計算3的平方根,然後再對該值求平方。現在,這個結果與3相差多少?scala scala.math.sqrt 3 warning there were 1 deprecation warnings re run with deprecation for details r...

scala基礎練習,學習scala必備知識點

有一句話叫做 先看懂,然後再手懂。就是先腦子會 然後再手練熟了 這確實是程式設計師的必備精神之一,多學多敲多看。作為乙個scala初學者,有必要先學習scala的基礎 scala基礎學習,點進去你就會有收穫了 特別注意scala嚴格遵循大小寫,關鍵字名不能寫錯 下面就讓我們來練習一下下,我們可愛的s...

C語言基礎練習(三)

include void main void i if a left 1 a 如果沒找到起始標誌 a 報錯。printf 請以a開頭 else if a right z 如果找到 a 卻沒找到 z 報錯 else 如果符合要求,輸出。printf d.n right left return incl...