上一章我们简单介绍了一下Scala的数据结构,这一章我们将进行详细讲述。
1.数组:分为定长数组和变长数组
定长数组:数组一旦声明,其长度是不可变的。
定长数组的声明和访问:
第一种:初始化定长度的数组:
val 名称=new Array[数据类型](数组长度)
第二种:通过初始化数据构建数组:
val 名称=Array[数据类型](初始化数据列表,以逗号分开)
修改数组中的数据或者通过下标赋值:
名称(index)=值
访问数组中数据,通过下标进行访问,并且数组下标从0开始:
名称(index)
变长数组的声明和访问:
第一种:初始化长度的可变数组:
val 名字=new ArrayBuffer[数据类型](初始化长度)
第二种:通过初始化数据创建可变数组:
val 名字=ArrayBuffer[数组类型](初始化数据,并且用逗号分开)
数组面临的问题:
1.数组随机访问速度很快,但是插入删除操作性能差。
2.数组中数据是可以修改的,多线程情况下不安全。
数组转换:
yield关键字将原始的数组进行转换会产生一个新的数组,原始的数组不变。
2.映射:在Scala中,把哈希表这种数据结构叫做映射。元组中的对偶元组(Tuple2)是Map映射的基本组成单位。分为可变和不可变。
不可变Map的声明和访问:
通过key->value参数列表构建Map:
val map =Map(key->value,key->value .....)
val map=Map[String,Int]("hadoop"->10,"spark"->20,"scala"->30)
访问map中的数据有三种方式,Scala中推荐使用最后一种:
1.map(key)
2.map.get(key)
3.map.getOrElse(key,默认值)
1.map(key)的方式访问key为hadoop的数据:
println(map("hadoop"))
2.map.get的方式访问key为spark的数据,其返回值是一个Option对象,该对象有两个值Some(value) 和None:
有返回值:Some(value) 可以通过get方法获取value数据
没返回值:None
println(map.get("spark").get)
3.map.getOrElse的方式访问key为scala的数据:
println(map.getOrElse("scala",555))
可变Map的声明和访问:
可变Map存在于scala.collection.muable包中,使用前必须先导入import scala.collection.muable
通过key->value参数列表构建Map:
val map =muable.Map(key->value,key->value .....)
通过对偶元组构建Map:
val map=muable.Map((key,value),(key,value) ....)
如:
val map=mutable.Map[String,Int]("hadoop"->555)
注意:在Scala中,有两种Map,一个是immutable包下的Map,该Map中的内容不可变;另一个是mutable包下的Map,该Map中的内容可变。
3.元组:就是用一对括号扩起来不同类型的数据的集合,并且元组中数据一旦声明不可变。映射是K/V对偶的集合,对偶是元组的最简单形式,元组可以装着多个不同类型的值。
创建元组:
1.元组是不同类型的值的聚集,对偶是最简单的元组。
2.元组表示通过将不同的值用小括号括起来,即表示元组。
声明:
val tuple=("Scala",35,7.9,true)
注意:Tuple都是继承自TupleN的,N是Tuple中元素的个数,N的最大值是22。
获取元组中的值:
使用下划线加脚标:tuple._N,例如 t._1。N代表数据的下标。
注意:元组中的元素脚标是从1开始的。
将对偶的集合转换成映射:调用其toMap方法。
4.列表:Scala中列表是一个链式结构,能够很容易的进行插入和删除操作。同样分为可变和不可变。
不可变List:一旦声明其列表数据不可该变。与Java中String类型数据类似,所以List中的任何操作都会产生新的List。
声明并创建List列表:
val list=List[数据类型](item*)
通过空列表和初始化数据声明列表:
val list=item::item::..::Nil
可变列表:List Buffer
可变列表的声明和使用:
val listBuffer=ListBufferdataType
通过初始化数据声明一个Set集合:
val set=Set[数据类型](item)
可变Set的声明:
可变Set首先需要导入包import scala.collection.mutable
创建一个可变Set:
val set=mutable.Set(item)
以上是本次随笔的内容,欢迎指正与补充。
原文:https://www.cnblogs.com/cyan-sea/p/12548207.html