首页 > 技术文章 > 大数据学习之Scala数组和集合学习38

hidamowang 2019-06-12 16:28 原文

六:scala数组

1 数组定义:

数组定义1var arr = new Array[String](3)

String:存储的元素类型

3:存储3个元素

添加元素: arr(1) = "dawn"

数组定义2val 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进行计数,输出结果为keyvalue.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

 

+ 字符串的拼接

++ 两个集合相加

++: 合并集合

 

.+: 头部追加元素

:+ 尾部追加元素

::: 两个集合相加

 

推荐阅读