数组、列表、元组、集合和映射
1、使用类型参数化数组【Array】
这张图可以解释Array的特性:
val array1 = Array("one","two","three") 等价于
{ val array1= new Array[String](3) // Scala使用new实例化对象或类实例
array1(0)="one"
array1(1)="two"
array1(2)="three"
}
这几行代码演示了Scala如何看待val的意义的重要概念。当你用val定义一个变量,那么这个变量就不能重新赋值,但它指向的对象却仍可以改变。
在该例中,array1不能被重新赋值成不同的数组,array1将永远指向那个它被初始化时候指向的同一个Array[String]实例。
但是我们能一遍遍地修改Array[String]中的元素,因此数字本身是mutable的。
2、使用列表【List】
List与Array相似,Array是所有对象都共享想用类型的可变序列,而List是共享相同类型的不可变序列。
如上所示,val类型的list 不可变,list中的元素不可变。
list 不提供append操作。
3、使用元组【tuple】
与列表一样,元组也是不可变的容器对象,但与列表不同,元组可以包含不同类型的元素。
元组自动推断数据类型,下标从_1计起。
为什么你不能像访问List里的元素那样访问元组的,就像pair(0)?
因为List的apply方法始终返回同样的类型,但是元组里的或许类型不同: _1可以有一个结果类型,_2是另外一个。
Tuple目前最长支持22位长度。
4、 Set and Map
集合映射方面,Scala同样提供了可变和不可变的替代品。
Scala的Set类继承关系:
Map同样分可变与不可变。缺省为不可变映射scala.collection.immutable.Map,代码如下:
Scala的Map类继承关系