=>(匿名函數)
參考文檔:scala => 用法 匿名函數
=>
匿名函數,在Spark中函數也是一個對象可以賦值給一個變量。
Spark的匿名函數定義格式:
(形參列表) => {函數體}
所以,=>
的作用就是創建一個匿名函數實例。
比如:(x:Int) => x +1 ,就等同於下面的Java方法:
public int function(int x) {
return x+1;
}
示例:
class Symbol {
var add = (x: Int) => x + 1
}
object test2 {
def main (args: Array[String] ): Unit = {
var symbol = new Symbol
printf(""+ symbol.add.toString())
}
}
<- (集合遍歷)
循環遍歷,示例如下:
var list = Array(1,2,3,4)
for (aa <- list) {
printf(aa+" ")
}
上面代碼類似於Java的代碼:
int[] list = {1,2,3,4};
for(int aa : list) {
System.out.print(aa+" ");
}
++=(字符串拼接)
var s:String = "a"
s+="b"
println(s)
s++="c"
println(s)
:::三個冒號運算符與::兩個冒號運算符
:::三個冒號運算符表示List的連接操作。(類似於Java中的 list1.addAll(list2)
)
::兩個冒號運算符表示普通元素與list的連接操作。(類似於Java中的list1.add(A)
操作)
scala操作示例:
val one = List(1,2,3)
val two = List(4,5,6)
val three = one ::: two
println(three.toString())
val four = 7 :: three
println(four.toString())
-> 構造元組和_N訪問元組第N個元素
-
scala中元組含義:
- 元組是不同類型的值聚集線程的列表
- 通過將多個值使用小括號括起來,即表示元組
-
scala中元組與數組區別:數組中元素 數據類型必須一樣,但是元組數據類型可以不同。
示例程序:
val first = (1,2,3) // 定義三元元組
val one = 1
val two = 2
val three = one -> two
println(three) // 構造二元元組
println(three._2) // 訪問二元元組中第二個值
_(下划線)的用法
通配符
_
可以起到類似於*
作用的通配符:
import org.apache.spark.SparkContext._
指代集合中的每一個元素
例如 遍歷集合篩選列表中大於某個值的元素。
val lst = List(1,2,3,4,5)
val lstFilter = lst.filter(_ > 3)
獲取元組中指定下標的元素值
val ss = (1,"22","333")
println(ss._1)
使用模式匹配可以用來獲取元組的組員
val m = Map(1 -> 2,2 -> 4)
for ((k,_) <- m) println(k) //如果不需要所有部件, 則在不需要的部件使用_; 本例只取key,因此在value處用_
成員變量而非局部變量添加默認值
var s:Int=_
def main(args: Array[String]): Unit = {
println(s)
}
:_* 作為一個整體,告訴編譯器你希望將某個參數當做數序列處理
def main(args: Array[String]): Unit = {
val s = sum(1 to 5:_*) //把1 to 5當作一個序列處理
println(s)
}
def sum(args: Int*) : Int = {
var result = 0 ;
for(s2 <- args) {
result += s2 ;
}
result ;
}
+=
為可變數組添加元素
val arrBuf1 = new ArrayBuffer[Int]()
arrBuf1+= 11 // 添加一個元素
println(arrBuf1)
-=
從map后者可變數組中移除相應的值
val arrBuf1 = new ArrayBuffer[Int]()
arrBuf1+= 11 // 添加一個元素
arrBuf1+= 12 // 添加一個元素
arrBuf1-= 12 // 刪除一個元素
println(arrBuf1)
var map = Map(1 -> 1,2 -> 2,3 ->3 )
map-=1
println(map)