大数据学习之Scala数组和集合学习38
六:scala数组
1 数组定义:
数组定义1: var arr = new Array[String](3)
String:存储的元素类型
3:存储3个元素
添加元素: arr(1) = "dawn"
数组定义2: val arr1 = Array[Int](1,2,3,4,5,6)
改变内容:arr1(1) = 20
添加元素:arr1 += 18 长度不可以改变
2长度可变的数组
创建长度可变数组:
val ab = scala.collection.mutable.ArrayBuffer(2,3,4)
长度可变:
ab += 440
3 数组方法
-》map(映射)
映射: 1 2 3 4 5
映射关系:f(x) = x*2
对应映射关系:2 4 6 8 10
-》flatten
扁平化操作
这里a1经过map之后res23就是 一个数组中有2个数组元素的数组
然后再进行扁平操作。将这2个数组合并成一个。并将其打散!!
-》flatMap
相当于先map操作再flatten
-》foreach
遍历数组中的元素
-》GroupBy
分组
通过上面的一些数组方法可以进行的Scala单词计数,
将上一步groupBy的结果Map集合的每一个元素进行遍历处理,haha -> Array(haha), dawn -> Array(dawn, dawn), hello -> Array(hello, hello), best -> Array(best) 处理每一个元素,
key值保持不变,value进行计数,输出结果为key,value.length
-》sortBy
排序
这里对上面结果进行排序。由于单词计数之后结果是Map集合,Map集合不能进行排序,需要先转化成List才可以排序,再使用sortBy
默认是正序
逆序加一个负号
七:scala集合
1 可变集合
scala集合有两种类型:
可变mutable
不可变Immutable
val b = List(2,4,6)
不可变集合:内容不可变(数组内容可变改)
长度不可变(默认)
可变集合:
注意:需要导包
import scala.collection.mutable._
val buff = ArrayBuffer(2,3,4)
内容可变:buff(1) = 300
长度可变:buff += 200
2不可变集合
可以出了默认的方法以外,还可以调用不可用集合。
import scala.collection.immutable._
3 集合的基本操作
在scala中列表为空表示(Nil表示空列表)
head:取头元素
tail:取尾元素(除了头全是尾)
5::a a列表的头加入一个元素11
11::12::13::Nil 空列表前加入三个元素11,12,13
+ 字符串的拼接
++ 两个集合相加
++: 合并集合
.+: 头部追加元素
:+ 尾部追加元素
::: 两个集合相加