前言
在上一期的《大数据之脚踏实地学15--Scala的数组操作》分享中,介绍了Scala的数组相关知识,借助于Array函数可以构造定长数组(即数组一旦定义好长度,就无法对元素个数做影响),而通过ArrayBuffer函数则可以构造变长数组。在本期中将介绍Scala的其他常用的数据结构,包括列表、元组和映射。
列表
Scala中的列表与之前分享的数组有一些相似之处,例如列表中的元素也需要具有相同的数据类型、对于不可变列表而言,其长度也是固定的。但也有一些差异,例如对于不可变数组的创建,需要提前指定数组元素的长度,而不可变列表无需指定长度便可直接构造、数组属于可变对象(即数组的元素可以被修改),而列表不是可变对象。接下来通过一些简单的实例,来接受列表的相关知识点。
列表的构造
不可变列表的构造只需要使用List函数就可以轻松搞定,一旦构造好后,其元素便不可以变动,包括列表元素的增加、删除和修改。当然,如果工作中需要对列表元素进行修改,可以构造可变列表,使用ListBuffer函数即可,该函数需要导入scala.collection.mutable模块
首先介绍一下可变列表的增删改操作,然后再介绍可变列表与不可以列表都可以使用的一些常规方法。
列表的增删改操作
可变列表的增
对于可变列表而言,可以借助于append方法在列表的末尾增加一个或多个元素;使用+=方法在末尾增加一个元素;使用++=方法追加另一个列表;使用insert方法在列表的指定位置增加一个元素。
可变列表的删
对于列表元素的删除也有一些基本的方法,例如trimStart方法删除列表开头的几个元素;trimEnd则可以删除列表末尾的几个元素;-=方法则可以删除指定的列表元素;clear方法还可以对列表元素做清空处理。
可变列表的改
如果工作中设计到可变列表元素的修改时,便可以借助于“取而代之”的思想实现元素之的修改。具体操作如下:
列表的其他操作
尽管不可变列表存在一些缺陷,但这不代表它只是一个容器,它还可以做其他事。接下来所要介绍的内容不局限于不可变列表,可变列表也具有相同的操作权限。具体代码案例如下:
元组的构造
元组与列表类似,同样属于不可变对象,所不同的是,列表中的元素是同类型的,元组的元素可以是不同类型的。而且还有一个非常大的区别,列表元素的索引从0开始,而元组则是从1开始,并且两种数据结构的索引写法也不相同。
相比于列表而言,元组可用的方法就少了很多,例如length方法、filter方法、drop方法、count方法等。如果你想使用列表的那些常规方法,也是可以的,那就对元组再使用productIterator方法,便可以基于此使用列表的其他方法了。
映射的构造
映射与Python的字典类似,映射的元素是由一对键值对构成的,映射也分为不可变映射和可变映射。借助于Map函数构造不可变映射,元素可以写成key -> value的形式,也可以写成(key,value)的形式。
可变映射的增删改
映射的其他常用方法
结语
本期的内容就介绍到这里,如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让更多的人学习和进步。
每天进步一点点:数据分析1480