scala中的集合分为三类:Seq(序列),Set(集),Map(映射),三者都扩展自Iterable.
每一类集合,都可以分为两个种类。
不可变集合, scala.collection.immutable._ 默认使用,不需要导包.
可变集合, scala.collection.mutable._ 需要手动导入包,才能使用.
分别属于不同的包。
Array 也是一种特殊的集合.
Tuple元祖 , 元祖没有可变和不可变之分.
一.元组
一组元素的集合.
创建:
直接用括号: val tp = (1,2.5,true,”str”)
通过new实现:val tp2 = new Tuple2(1,5) // 2表示元组元素的个数
取值: 通过角标 ,从1开始
tp2._1
对偶元组:
特殊的元组,只有2个元素。Map 集合中存储的元素,就是对偶元组。
val tp = (“a”,18)
交换元素: swap
元组的元素最多可用有22个。
元组的本质就是一个样例类(特殊的类)
二.数组
不可变数组 Array 长度不可变,但是内容可变
可变数组 ArrayBuffer 长度和内容都可变
a.不可变数组:
指定数组类型,并赋值,类型可省略,编译器会自动推导。
val arr1 = Array[Int](1,2,3,4,5)
通过new关键字创建的数组,必须指定数组的类型和长度
val arr2 = new Array[Int](10)
取值:
通过角标,从0 开始 arr(0)
如果对不可变数组,添加了元素,实际上是生成了一个新的数组。
b.可变数组:
scala中的导包,可以在需要的任意地方导入。
导包:
创建可变数组:
可变数组的增删改查操作:
修改:
增加:
+= 对应元素
++= 对应集合
insert(n:Int,x:Int*) 在指定位置添加元素
删除:
-= 操作元素
--= 操作集合
remove(n:Int) 指定位置的元素
remove(n:Int,len:Int) 从指定位置开始,删除指定个数的元素
可变数组和不可变数组的转换:
toArray 其他的集合 --à Array
toBuffer 其他的集合 -à ArrayBuffer
数组上的常用方法:
max min sum sorted sortWith sortBy
数组的拼接:
存储一个元祖类型:
拉链一一对应,数据类型是对偶元组
zipWithIndnx自动加索引,索引从0开始
拉链操作:
zipWithIndnx操作:
三.List
不可变的List List 长度不可变,内容也不可变
可变的List ListBuffer 长度内容都可变,必须导包
a.不可变的List
val lst1 = List[类型](元素)
val lst2 = 9::2::Nil
:: 和 Nil 是组成List的两个单位。
:: 这是一个方法,属于List上的方法。 右连接
Nil 空的List
(9::(6:(3::Nil) ))
对不可变的集合元素添加,生成新的集合:
b.可变List
+= ++= insert
-= --= remove
判空:
把List集合理解为两个部分:
头元素 + 尾列表
List的拼接: