Scala集合有可变和不可变两种
举个例子,我有一个列表,这个列表有三个元素,如果我要修改这个列表的话,我可以更改任何一个元素的值,那么这个列表是可变的,我得到的永远是这一个列表
相反的,如果这个列表的元素无法更改,如果我想达到修改的效果,可以通过重新生成一个列表,新的列表里是我想要的值,返回给我,这样的话也可以达到相同的效果,那么这个列表就是不可变的。
Scala推荐使用不可变的变量
实际上这涉及到函数式编程的一种思想,即程序中的操作应该将输入值映射成输出值,但不应该修改输入值,可以这样认为,这样的方法没有副作用
Set
初始化
val set=Set(1,2,4)
添加新元素,注意可变集合和不可变集合,默认是不可变集合
val set1 = Set(1, 2, 4)
val set2 = set1 + 5
print(set1) //1,2,4
print(set2) //1,2,4,5
val set3 = mutable.Set(1, 2, 4);
set3 + 5
print(set3) //1,2,4
set3 += 5
print(set3) //1,2,,4,5
可以再想想
var set1 = Set(1, 2, 4)
set1+5
print(set1) //1,2,4
set1+=5
print(set1) //1,2,4,5
实际上使用+的时候都不会改变原有集合,而是返回原有的集合。+=可以改变可变集合,当不可变集合是val的时候无法调用+=,因为无法把set1的指针指向新的集合,是var的时候会生成一个新的集合,把set1的指针指到新的集合上
Map
初始化
val map=Map(1->"a",2->"b",3->"c")