Spark学习(五)Scala数据结构(容器,列表,集合,映射)

Spark学习(五)Scala数据结构(容器,列表,集合,映射)

1、容器(Collection)

1)Scala提供了一套十分丰富的容器(collection)库,包括列表(List)、数组(Array)、集合(Set)、映射(MapR)等
2)根据容器中元素的组织方式和操作方式不同,可以分为有序和无须,可变和不可变的容器类别;
3)Scala使用三个包来组织容器类,分别是scala.collecton、scala.collection.mutable、scala.collection.immutable三个包;其中主要使用的是后两个包。
继承关系不可变的容器类可变类

2、列表(List)

1)列表是一种共享相同类型的不可变的对象序列,因为是一个不可变的容器,Scala的List定义在scala.collection.mutable包中。
2)不同于Java的java.util.List,Scala的List一旦被定义其值就无法进行改变,因此声明List的时候必须要进行初始化。
例:var StrList=List(“BigData”,“Hadoop”,“Spark”)
注:前文所说的Var 定义的变量名所代表的指针可变,Val 所定义的变量名代表的指针是不可变的,即现有两个定义 var str1和val str2。那么str1所指向的位置是可变的,而str2所指向的位置是不可变的。str1和str2 所指向的对象是不是可变的则和指针是否可变没有关系。
List的head和tail3)列表的创建,其中"::"为列表连接符,该连接符为右结合的方式。
在这里插入图片描述

3、集合(Set)

1)集合(Set)是不重复元素的容器(Collection)。列表中的元素按照插入的先后顺序进行组织的(类似钰Python中的Set类型),但是,“集合”中的元素并不会记录插入的先后顺序,而是以“哈希”方法对元素的值进行组织,所以,它允许你快速的找到某个元素。
2)集合包括可变集合和不可变集合,分别位于scala.collection.mutable和scala.collection.immutable包,缺省情况下是不可变集。
不可变集合注:此时为缺省情况,定义的集合为不可变集合,但是第二行对myset进行了“添加”元素,该“添加”功能的实现是因为定义的myset为可变的指针,当运行第二行语句的时候,产生了一个新的集合对象对于这个新的集合对象加入了“Scala”元素,指向可变的myset指向了这个新的集合对象,打印即可发现,该新对象中含有了“Scala”元素。对于第一行所产生的集合对象此时,并没有发生改变,依然是只含有“Hadoop”和“Spark”两个元素。此过程产生了新的对象
3)如果要声明一个可变集合,则需要提前引入scala.collection.mutable包
Set可变集合注:此时并没有产生新的Set对象

4、映射(Map)

1)映射(Map)是一系列键值对的容器,在一个映射中,键一定是唯一的,但值不一定是唯一的。可以通过键对值进行唯一的检索。
2)和集合一样Scala采用了类继承机制,提供了了可变和不可变的两种版本的映射,分别定义在包scala.collection.mutable和scala.collection.immutable里,默认情况下,Scala默认使用的是不可变的映射,如需使用可变的映射需要明确的导入scala.collection.immutable.Mpae。
实例访问映射添加映射元素映射的遍历

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值