柚子快報(bào)邀請(qǐng)碼778899分享:后端 Scala第二天
柚子快報(bào)邀請(qǐng)碼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ū)ο缶幊?: ?將對(duì)象傳來傳去 ?, 調(diào)用一個(gè)方法傳遞的是一個(gè)對(duì)象,返回值的也是一個(gè)對(duì)象
???(1) 將對(duì)象作為參數(shù)
???(2) 將對(duì)象作為返回值
面向函數(shù)編程 : ?將函數(shù)傳來傳去 ???--- 高階函數(shù)
???(1) 以函數(shù)作為參數(shù) ??(** 很重要 **)
???????(2) 以函數(shù)作為返回值 (知道就行)
lambda表達(dá)式 ??--- 匿名表達(dá)式
???定義即調(diào)用
foreach : ?循環(huán)數(shù)組,按照順序?qū)?shù)組中的元素一個(gè)一個(gè)傳給后面括號(hào)中的函數(shù) ?
????array.foreach(println)
3、
(1) map() : 循環(huán)數(shù)組,將數(shù)組中的元素一個(gè)一個(gè)傳遞給后面的函數(shù),函數(shù)的返回值會(huì)構(gòu)建成一個(gè)新的數(shù)組
??-- 數(shù)據(jù)量不變 ???一對(duì)一
????
val ids: Array[String] = students.map(student => student.split(",")(0))
????(2) filter() : ?將數(shù)組中的元素一個(gè)一個(gè)傳遞給后面的函數(shù)
??如果函數(shù)返回True保留數(shù)據(jù)
??如果函數(shù)返回False過濾數(shù)據(jù)
??????????????-- 數(shù)據(jù)(可能)會(huì)變少
val filterStudent: Array[String] = students.filter(s => "文科一班".equals(s.split(",")(4)))
????(3) flatMap() : ?將集合中的元素一個(gè)一個(gè)傳遞給后面的函數(shù), 函數(shù)的返回值必須是一個(gè)集合, 然后將返回的集合展開成一個(gè)新的集合
先是 map ??-- 返回一個(gè)數(shù)組
????????????????再是 flat ?-- 再展開
??????????-- 將數(shù)據(jù)一行變多行 ???一對(duì)多 ?
????
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)建一個(gè)無序唯一的set集合 ??-- 不可變
?val set = Set(1, 2, 3, 3, 1, 1, 4)
?// 3、創(chuàng)建一個(gè)元組
?val t: (Int, Int, Int, Int, Int, Int) = (1, 2, 3, 4, 5, 10)
?// 4、創(chuàng)建一個(gè)不可變的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)計(jì)單詞數(shù)量 ???(word, countNum)
?????.foreach(println)
柚子快報(bào)邀請(qǐng)碼778899分享:后端 Scala第二天
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。