一、Scala数组
1.数组的定义:
方法一:val arr = new Array[String](3)
String代表数据的元素类型、3表示数组的长度
方法二:val arr = Array[Int](1,3,5,7)
修改数组某元素:arr(1) = 18
注意:数组的长度不可改变,arr += 9(错误,数组不可添加元素),在定义数组时数据类型可以省略
2.数组的方法
1)map(映射)
object MapTest { def main(args: Array[String]): Unit = { val arr = Array[Int](1,3,5,7) val arr1 = arr.map(x => x*5) println(arr1.toBuffer) } }
注意:在Scala语言中,使用toBuffer来将堆地址转换为其对应数据信息。
2)flatten(扁平化)
命令行操作:val arr = Array("hello hunter henchou","hello reba henmei")
arr.map(_.split(" ")) //res1: Array[Array[String]] = Array(Array(hello, hunter, henchou), Array(hello, reba, henmei))
arr.map(_.split(" ")).flatten //res2: Array[String] = Array(hello, hunter, henchou, hello, reba, henmei)
3)flatMap(先做map映射,再做flatten扁平化)
命令行操作:arr.flatMap(_.split(" ")) //res3: Array[String] = Array(hello, hunter, henchou, hello, reba, henmei)
4)foreach(遍历数组)
命令行操作:val arr = Array(2,4,6,8)
arr.foreach(x => print(x)) //2468
5)groupBy(分组)
命令行操作:val arr = Array("hello hunter henchou","hello reba henmei")
需求1:将arr分解成一个包含arr所有单词的数组,然后根据单词进行分类
arr.flatMap(_.split(" ")).groupBy(x => x)
//结果:res9: scala.collection.immutable.Map[String,Array[String]] = Map(reba -> Array(reba), henmei -> Array(henmei), hunter -> Array(hunter), henchou -> Array(henchou), hello -> Array(hello, hello))
需求2:将arr进行单词计数wordcount
arr.flatMap(_.split(" ")).groupBy(x => x).map(x => (x._1,x._2.length))
//结果:res12: scala.collection.immutable.Map[String,Int] = Map(reba -> 1, henmei -> 1, hunter -> 1, henchou -> 1, hello -> 2)
6)sortBy(排序)
命令行操作:val arr = Array("hello hunter henchou","hello reba henmei")
需求:将arr进行单词计数并按照降序排序:
arr.flatMap(_.split(" ")).groupBy(x => x).map(x => (x._1,x._2.length)).toList.sortBy(x => x._2)
//结果:res16: List[(String, Int)] = List((reba,1), (henmei,1), (hunter,1), (henchou,1), (hello,2))
注意:arr数组进行完groupBy后时Map集合,而Map集合不支持sortBy方法,必须将其用toLis或toArrayt转为List集合或Array数组再进行排序。
二、集合
1.集合的分类:1)可变集合(mutable)
2)不可变集合(Immutable)
2.集合的定义:
1)定义不可变集合:val s = List(1,3,5)
不可变集合元素不可修改,长度也不能改变(即不能添加元素)
可以通过命令"scala.collection.immutable."查看所有不可变集合
2)定义可变集合:定义可变集合前必须导入可变集合的包
import scala.collection.mutable._
val s = ArrayBuffer(2,4,6)
可变集合可以修改集合元素,也可以添加元素
可以通过命令”scala.collection.mutable.“查看所有可变集合