1,数组定义
变长数组使用类scala.collection.mutable.ArrayBuffer进行定义
定义一个变长Int类型数组arr,利用+=运算符、append方法添加一个数组元素(注意是追加元素),还可以利用appendAll方法添加一个数组(多个元素)
![](https://i-blog.csdnimg.cn/blog_migrate/7c11a354929539ace8136312f01fa033.png)
遍历数组
遍历可变数组arr,跟遍历定长数组没有不同
![](https://i-blog.csdnimg.cn/blog_migrate/65b07763f157bcf31cefff9ad21dbfe3.png)
移除元素
利用remove方法可以按下标删除数组元素,当然可能出现下标越界异常
![](https://i-blog.csdnimg.cn/blog_migrate/247a9b914b900cf035a01be352bc6022.png)
利用-=运算符按值直接删除数组元素
![](https://i-blog.csdnimg.cn/blog_migrate/e20efa9dd30703fc611737677a9b7e19.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1f61e3a0c6543893db7729bf1260a968.png)
使用remove()方法还可以在数组的固定位置移除指定数量的元素
![](https://i-blog.csdnimg.cn/blog_migrate/1374de028d440d5e00b41b11c76bcc12.png)
3、数组合并
Scala支持使用++=符号将两个变长数组进行合并,其实还可以用appendAll方法来拼接两个数组
![](https://i-blog.csdnimg.cn/blog_migrate/920e1c800dcc0f4289f76653355ce5dd.png)
插入元素
![](https://i-blog.csdnimg.cn/blog_migrate/99c72cd08f4e8dc724717be134289704.png)
![](https://i-blog.csdnimg.cn/blog_migrate/77325ddb415ea5c08619f2534f0f406d.png)
如果插入的位置参数超出数组的长度,要报错所欲就要注意
![](https://i-blog.csdnimg.cn/blog_migrate/22a035ae1228935651c551f2794cf1a3.png)
二、列表 (List)
创建不可变列表
创建列表有静态初始化和动态初始化两种方式
创建一个Int类型的列表- list1
![](https://i-blog.csdnimg.cn/blog_migrate/ff6e67d07cb6becdd97ecf0bc87cda14.png)
创建一个混合类型的列表 - list2,元素类型被系统统一为Any
![](https://i-blog.csdnimg.cn/blog_migrate/62cb1811e9a1a74bdda1a95f4933c563.png)
创建一个空列表,后面再添加元素
![](https://i-blog.csdnimg.cn/blog_migrate/202937c557e6176a29e23ecaf5a539ff.png)
给列表添加元素
(1)在列表头添加元素
在列表list1的头部追加一个元素0,生成一个新列表 list3,列表list1没有变的
![](https://i-blog.csdnimg.cn/blog_migrate/78913d94308152dbb9a5f1559df58179.png)
利用::在列表头添加新元素
![](https://i-blog.csdnimg.cn/blog_migrate/e4e418abf577dfb14281e639a8664032.png)
(2)在列表尾添加元素
在列表list1的尾部追加一个元素100,生成一个新列表 list4,列表list1没有变的
![](https://i-blog.csdnimg.cn/blog_migrate/86be6e527b7f9f7527c31843919ab9ae.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c4856f2e6c123145db6f117088c32fd9.png)
列表后的::运算符要连接一个列表
![](https://i-blog.csdnimg.cn/blog_migrate/86fdce367935bcec490c8f1733f941ed.png)
列表合并操作
List也支持合并操作
创建两个列表list1和list2
![](https://i-blog.csdnimg.cn/blog_migrate/7ade62fa8dca754d90bb3837ac231fa4.png)
list1与list2合并生成列表list3,list1元素在前,list2元素在后
![](https://i-blog.csdnimg.cn/blog_migrate/73a99438a85859497f42ad6ba3ce3b02.png)
用方法调用来实现list1与list2合并生成列表list4
![](https://i-blog.csdnimg.cn/blog_migrate/050a7009bf69d752679611bdbd582caa.png)
(二)可变列表
创建可变列表
可变List需要使用scala.collection.mutable.ListBuffer类
创建列表时初始化数据(静态初始化)
![](https://i-blog.csdnimg.cn/blog_migrate/563e415fed9b2d4b3f292a1078a40096.png)
先创建空列表,然后利用+=运算符添加数据(动态初始化)
![](https://i-blog.csdnimg.cn/blog_migrate/181821a698f05b7ded619a06f7ec23f5.png)
列表合并
将列表list1与列表list2合并,list1在前,list2在后
![](https://i-blog.csdnimg.cn/blog_migrate/cd5899ced0ca20459d0ef760e62b5011.png)
列表排序
列表升序和降序(降序 = 升序 + 反序)
![](https://i-blog.csdnimg.cn/blog_migrate/3a9a1bd93dabacf899f95f7b45eadf20.png)
列表总和、平均值、最值
计算总和、最值可以直接调用列表方法完成,平均值得自己计算
![](https://i-blog.csdnimg.cn/blog_migrate/467b04d06182ca40a8d38596da95c0cf.png)
添加新元素
添加新元素有两种方法:在末尾添加新元素用append方法;在中间插入新元素用insert方法
调用可变列表的insert(pos, value),在pos位置插入新元素value
![](https://i-blog.csdnimg.cn/blog_migrate/e4ef0dbb0b2e5a56296b5f728102661b.png)
移除列表元素
调用可变列表的remove(pos, count)方法,从pos位置开始移除count个列表元素
![](https://i-blog.csdnimg.cn/blog_migrate/14bc8da6a3deaf937ec2d43025f9afd1.png)
三、映射 (Map)
Scala中的Map也分可变Map和不可变Map,默认为不可变Map。
不可映射(创建不可映射)
创建不可变映射mp,用键->值的形式
![](https://i-blog.csdnimg.cn/blog_migrate/05ace233fec77a2b2e28eb554f6a5b3b.png)
创建不可变映射mp,用(键, 值)的形式
![](https://i-blog.csdnimg.cn/blog_migrate/0f36751ec26ebe781668183bbb63c83c.png)
注意:Map是特质(Scala里的trait,相当于Java里的interface),不能实例化
遍历不可变映射
利用for循环来实现遍历
![](https://i-blog.csdnimg.cn/blog_migrate/8cc5397a93a02c6b111d3425b989d378.png)
调用mp.keys的foreach算子实现遍历
![](https://i-blog.csdnimg.cn/blog_migrate/efb20f7e3b9ecfd49ba26e5f302bf8a5.png)
(二)可变映射
创建可变Map需要引入类scala.collection.mutable.Map,创建方式与上述不可变Map相同。
创建可变映射
创建可变映射mp
![](https://i-blog.csdnimg.cn/blog_migrate/b575d5d7c390e6f08a27f749e80dd64b.png)
修改可变映射
将键02的值改为man将键05的值改为belle
![](https://i-blog.csdnimg.cn/blog_migrate/24c81dd26bcada0e75eb8bf289070761.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2e792714b4ec543019a2cb705b7b9213.png)
查询可变映射
![](https://i-blog.csdnimg.cn/blog_migrate/5886946be5566796950f88e72edcfc67.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d3a24f7a2b6b324b6cf962f3e157eb52.png)
添加元素
查看可变映射当前值
![](https://i-blog.csdnimg.cn/blog_migrate/06595315b2cc59c4aa29d82afb051436.png)
用两种方式添加元素
![](https://i-blog.csdnimg.cn/blog_migrate/8d7c4daf3b94e27109ef5f767ddbbf4a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d1511a0915630bd6caef4629ace0a9b1.png)
删除元素
删除存在的键 - 07 对应的元素
![](https://i-blog.csdnimg.cn/blog_migrate/085e0dbc36272641d1fe2b49bd7f41e7.png)
删除不存在的键 - 11 对应的元素,不报错,映射也没有变化
![](https://i-blog.csdnimg.cn/blog_migrate/48ba76b1e880cfd3ade4044963fba2b6.png)
这一节学到【列表创建和添加】【列表的合并,求各值】【映射Map】【创建,修改,查询,添加删除...】