柚子快報邀請碼778899分享:后端 Scala第二天
柚子快報邀請碼778899分享:后端 Scala第二天
1、 字符串拼接
scala形式 : ??
val s = "java"
val a = 123
val x = 3.14
// 格式: ????s - 方法 ??$ - 引用符,引用外面的變量
val sax = s"$s $a $x" ?
// 想在中間再加上字符
val sdd = s"$s $3ih7pjjnjzpn+1 $f"
println(sax) ????// java 123 3.14
println(sdd) ????// java 123+1 3.14
2、 scala ?-- 面向?qū)ο缶幊??/ ?面向函數(shù)編程
????面向?qū)ο缶幊?: ?將對象傳來傳去 ?, 調(diào)用一個方法傳遞的是一個對象,返回值的也是一個對象
???(1) 將對象作為參數(shù)
???(2) 將對象作為返回值
面向函數(shù)編程 : ?將函數(shù)傳來傳去 ???--- 高階函數(shù)
???(1) 以函數(shù)作為參數(shù) ??(** 很重要 **)
???????(2) 以函數(shù)作為返回值 (知道就行)
lambda表達式 ??--- 匿名表達式
???定義即調(diào)用
foreach : ?循環(huán)數(shù)組,按照順序?qū)?shù)組中的元素一個一個傳給后面括號中的函數(shù) ?
????array.foreach(println)
3、
(1) map() : 循環(huán)數(shù)組,將數(shù)組中的元素一個一個傳遞給后面的函數(shù),函數(shù)的返回值會構(gòu)建成一個新的數(shù)組
??-- 數(shù)據(jù)量不變 ???一對一
????
val ids: Array[String] = students.map(student => student.split(",")(0))
????(2) filter() : ?將數(shù)組中的元素一個一個傳遞給后面的函數(shù)
??如果函數(shù)返回True保留數(shù)據(jù)
??如果函數(shù)返回False過濾數(shù)據(jù)
??????????????-- 數(shù)據(jù)(可能)會變少
val filterStudent: Array[String] = students.filter(s => "文科一班".equals(s.split(",")(4)))
????(3) flatMap() : ?將集合中的元素一個一個傳遞給后面的函數(shù), 函數(shù)的返回值必須是一個集合, 然后將返回的集合展開成一個新的集合
先是 map ??-- 返回一個數(shù)組
????????????????再是 flat ?-- 再展開
??????????-- 將數(shù)據(jù)一行變多行 ???一對多 ?
????
val words: List[String] = lines.flatMap(line => line.split(","))
4、集合 ?-- 可變(mutable) / 不可變(immutable)
(1) list ?: ?有序不唯一 ???-- 不可變
????(2) set ??: ?無序唯一 ?????-- 不可變
????(3) Map ??: ?kv格式
????(4) Tuple : ?元組, 固定長度的集合
?// 1、 List 集合 ?-- 不可變
?val list = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
?// 2、創(chuàng)建一個無序唯一的set集合 ??-- 不可變
?val set = Set(1, 2, 3, 3, 1, 1, 4)
?// 3、創(chuàng)建一個元組
?val t: (Int, Int, Int, Int, Int, Int) = (1, 2, 3, 4, 5, 10)
?// 4、創(chuàng)建一個不可變的map集合
?// ???("001", "張三") : ?二元組 ?
?// ???"001" -> "張三" : ?構(gòu)建二元組的簡寫
?val map = Map(("001", "張三"), ("002", "李四"), "003" -> "王五")
5、 WordCount 簡寫
// 鏈?zhǔn)秸{(diào)用
????Source
?????.fromFile("data/words.txt") ?// 讀取文件
?????.getLines() ?// 獲取所有行
?????.toList ?// 轉(zhuǎn)換成List集合
?????.flatMap(line => line.split(",")) ?// 一行變多行
?????.groupBy(word => word) ??// 以單詞分組 ????(word, List(words)))
?????.map(kv => (kv._1, kv._2.length)) ?// 統(tǒng)計單詞數(shù)量 ???(word, countNum)
?????.foreach(println)
柚子快報邀請碼778899分享:后端 Scala第二天
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。