首页 > 其他 > 详细

关于Scala的知识点(二)

时间:2020-03-22 22:00:24      阅读:62      评论:0      收藏:0      [点我收藏+]

上一章我们简单介绍了一下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

创建空可变列表

val listBuffer=new ListBufferdataType

 

5.集合:Scala的集合有三大类:序列Seq集合Set映射Map,所有的集合都扩展自Iterable特质,在Scala中集合有可变(mutable)不可变(immutable)两种类型,immutable类型的集合初始化后不能改变了(注意与val修饰的变量进行区别)。

Set:代表一个没有重复元素集合插入相同元素无效,并且不能保证插入顺序。同样分为可变不可变

不可变Set声明

通过初始化数据声明一个Set集合:
val set=Set[数据类型](item)

可变Set声明

可变Set首先需要导入包import scala.collection.mutable

创建一个可变Set
val set=mutable.Set(item)

以上是本次随笔的内容欢迎指正补充

关于Scala的知识点(二)

原文:https://www.cnblogs.com/cyan-sea/p/12548207.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!