Scala进阶-函数练习
生活随笔
收集整理的這篇文章主要介紹了
Scala进阶-函数练习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1) map()函數
可以對整個集合進行操作,比如
創建一個Seq列表,然后用map對集合*2
2) flatMap函數
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)3) reduce函數
redce 函數可以對集合當中的元素進行歸約操作,下劃線是占位符,兩個下劃線表示歸約的規則是使用前后兩個元素,中間加號,用來表示對元素的操作
不指定reduce是left還是right,默認情況是reduceLeft
4)foreach函數
foreach函數與map相似,都是遍歷集合對象,并對每一項執行指定的方法。區別在于foreach無返回值,map返回一個List
val list = List(1,2,3)list.foreach(println)5) groupby 函數
groupby 函數將列表進行分組,分組依據是應該groupby函數中的函數的返回值,可以看到結果是返回一個map集合
val list = List("a","b","c","d")val result = list.groupBy(x=>{x match {case "a" => 1case "b" => 1case _ => 2}})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)))6) 元祖
//元祖val t = (31,"chun1",18)println("id:"+t._1)println("name:"+t._2)println("age:"+t._3)結果:id:31name:chun1age:187)filter函數
篩選出列表中符合條件的元素、
//filter函數val list = List(1,2,3,4,5)val newlist = list.filter(_>3)println(newlist)結果:List(4, 5)8)count函數
count函數計算列表中滿足條件的元素個數
//count函數val list = List(1,2,3,4,5,6)val newlist = list.count(_>3)println(newlist)結果:29)sortBy函數
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)10) diff函數(差集)(在set里可以用–)
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)也可以這樣寫list diff list1
11)union函數或者直接用++,連接兩個集合
//union函數或者++val list1 = List(1,2,3,4,5)val list2 = List(6)val newlist = list1.union(list2)val newlist2 = list1++list2println(newlist)println(newlist2)12)Intersect函數(在set里可以用&)
//intersect函數val set1 = Set(1,2,3,4)val set2 = Set(1,2,5,6)val newset = set2 & set1val newset1 = set1 intersect set2println(newset1)println(newset)結果:Set(1, 2)Set(1, 2)13)take函數
提取列表前n個元素
//take函數val list = List(1,2,3,4,6,3,5)val takelist = list take 2val takelist2 = list.take(5)println(takelist)println(takelist2)結果:List(1, 2)List(1, 2, 3, 4, 6)14)drop函數(丟棄前n個元素)
//drop函數val list = List(1,2,3,4,5,6)var droplist = list drop 2println(droplist)結果:List(3, 4, 5, 6)15) partition函數(把列表分成兩部分,第一部分為滿足條件的,第二部分為不滿足條件的)(結果為元祖)
//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)16)
總結
以上是生活随笔為你收集整理的Scala进阶-函数练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JS 逆向百例】网洛者反爬练习平台第五
- 下一篇: iPhone 14系列电池容量曝光 网友