1)sacla集合有三大类:序列Seq,集Set,映射Map。所有集合都扩展自Iterable特质。
2)对于几乎所有集合类,scala都提供了可变和不可变两种版本。分别位于以下两个包
** 不可变集合:scala.collection.immutable**
** 可变集合: scala.collection.mutable**
不可变集合
可变集合
数组
不可变数组
1)修改数组值
a1(0) = 1
a1.update(0,5)
2)添加元素
//添加在后面
val a3 = a1:+5
println(a3.mkString(","))
//在前面添加
val a4 = 6+:a1
println(a4.mkString(","))
可变数组(ArrayBuffer)
增加元素
a1.+=(2,3)
a1.append(4,5)
a1+=6
a1.insert(0,7,8)
修改元素
a1(1) = 2
可变和不可变数组转换
arr.toBuffer
arr.toArray
注:多维数组最简单创建方式
//二维数组 三行四列 三个一维数组,每个一维数组中有四个元素
val arr = Array.ofDim[Int](3,4)
列表List
不可变List
添加元素
val list = 1::2::3::4::6::7::Nil
val list2 = 1::2::Nil.::(3)
//1234567
println(list.mkString(","))
//123
println(list2.mkString(","))
//在前面添加
val list3 = list.+:(5,6,7,8)
列表合并
val list3 = list:::list2
val list4 = list++list2
可变ListBuffer
添加
val buffer = ListBuffer(1,2,3)
buffer+=4
buffer.append(5)
buffer.insert(0,0)
修改
buffer(1) = 6
buffer.update(1,7)
删除
buffer.remove(1)
//根据值删除
buffer-=9
Set
可变
++=
--=
.+=(T)[add()]
.-=(T)[remove()]
不可变/可变
.+
.++
.-
.--
Map
可变
map.update("d",5)
map("d") = 5
++=
--=
+=(put)
-=(remove)
不可变/可变
.++
.--
.+
.-
getOrElse
元组
元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。
元组中最大只能有 22 个元素
//( 1)声明元组的方式: (元素 1,元素 2,元素 3)
val tuple: (Int, String, Boolean) = (40,"bobo",true)
//( 2)访问元组
//( 2.1)通过元素的顺序进行访问,调用方式: _顺序号
println(tuple._1)
println(tuple._2)
println(tuple._3)
//( 2.2)通过索引访问数据
println(tuple.productElement(0))
//( 2.3)通过迭代器访问数据
for (elem <- tuple.productIterator) {
println(elem)
}
//( 3) Map 中的键值对其实就是元组,只不过元组的元素个数为 2,称之为
对偶
val map = Map("a"->1, "b"->2, "c"->3)
val map1 = Map(("a",1), ("b",2), ("c",3))
map.foreach(tuple=>{println(tuple._1 + "=" + tuple._2)})
}
注:Set和Map是trait,list是sealed abstract class 所以无法new