本篇文章是学习了课程中scala的相关知识点之后,对本人认为比较重点的知识做一些总结和记录,供日后学习使用。
第一点:scala有两种变量类型:val var 。
val 变量类型:不可变变量 也就是 常量,声明常量的时候使用。
var 变量类型:可变变量 也就是 变量,声明变量的时候使用。
在spark的RDD数据集开发中,大部分情况下都是使用val 不可变变量,所以val声明用的较多。
在声明变量的时候可以选择是否给变量指定类型,在指定类型之后,后面对该变量进行赋值时要对应。
scala是没有++,--操作的,但可以使用这样的形式:age += 1实现加1操作等。
第二点:scala数组Array ArrayBuffer 以及遍历
1.构建数组,可以直接使用Array构建,但是是长度不可改变的数组。
由于Scala与Java都是运行在JVM中,双方可以互相调用,因此Scala数组的底层实际上是Java数组。
2.在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer。
(1)为了方便使用,可以先导入scala库:import scala.collection.mutable.ArrayBuffer
//这里创建一个未指定类型的空ArrayBuffer数组,可以使用+=操作符添加元素。
val arr = ArrayBuffer()
添加一个元素: arr += 1
添加多个元素: arr += (2,3,4)
添加一个数组: arr ++= Array(1,2,4)
arr.trimEnd(3) //从尾部开始截断3个元素
arr.trimStart(2) //从头开始截断2个元素
//使用insert()函数可以在指定位置插入元素,但是这种操作效率低,因为需要移动指定位置后的所有元素。
arr.insert(5,100) //在第五个元素位置增加一个元素100
arr.insert(7,9,2,555,66) //在第七个位置(最后一个位置)加入 9,2,555,66
//使用remove()函数可以移除指定位置的元素
arr.remove(7) //移除第七位的元素
arr.remove(6,3) //指定从第6个位置开始移除3个元素
//Array和ArrayBuffer的互相转换
arr.toArray //转换成不可变数组
arr.toBuffer //转换成ArrayBuffer类型数组,可变
(2)遍历Array和ArrayBuffer
//使用for循环和until遍历Array|ArrayBuffer
for (i <- 0 until arr.length)
println(arr(i))
//跳跃遍历
for (i <- 0 until (arr.length,2))
println(arr(i))
//从尾部开始遍历
for (i <- (0 until arr.length).reverse)
println(arr(i))
(3)数组的常用操作
//求和
val arr = Array(1,2,3)
val sum = arr.sum
//取最大值
val max = arr.max
//排序
scala.util.Sorting.quickSort(arr)
//获取数组中所有元素内容
arr.mkString
arr.mkString(",") //内容以,隔开
第三点:map操作
val person = Map("spark" -> 6,"hadoop" -> 11)
person("hadoop") #根据key访问其value值
val person = scala.collection.mutable.Map("spark" -> 6,"hadoop" -> 11) #这个可以改变
person += ("Flink" -> 5)
person -= "Flink"
val sparkValue = if(person.contains("spark")) person("spark") else 0
val sparkValue = person.getOrElse("Flink",0) #是否包含Flink,包括就输出Flink对应的value值,不包括就输出0
for((key,value) <- person) println(key + " : " + value) #遍历打印出这个map
for( key <- person.keySet) println(key + " : ")
val person = scala.collection.immutable.SortedMap("spark" -> 6,"hadoop" -> 11) #map排序,根据其元素的key进行排序
第四点:tuple
val tuple = ("spark",6,99.0) #tuple元组,可以包含不同类型的元素 访问的时候下标从1开始
tuple._1
tuple._2
当函数要求最后返回若干个值的时候或者接受若干个值时,使用tuple