Scala进阶笔记---数组、列表、元组、集合和映射

数组、列表、元组、集合和映射

1、使用类型参数化数组【Array】


Scala进阶笔记---数组、列表、元组、集合和映射_第1张图片
pic1

这张图可以解释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是共享相同类型的不可变序列。


Scala进阶笔记---数组、列表、元组、集合和映射_第2张图片
pic2

如上所示,val类型的list 不可变,list中的元素不可变。
list 不提供append操作。

3、使用元组【tuple】


Scala进阶笔记---数组、列表、元组、集合和映射_第3张图片
pic3

与列表一样,元组也是不可变的容器对象,但与列表不同,元组可以包含不同类型的元素。
元组自动推断数据类型,下标从_1计起。
为什么你不能像访问List里的元素那样访问元组的,就像pair(0)?
因为List的apply方法始终返回同样的类型,但是元组里的或许类型不同: _1可以有一个结果类型,_2是另外一个。
Tuple目前最长支持22位长度。

4、 Set and Map
集合映射方面,Scala同样提供了可变和不可变的替代品。


Scala进阶笔记---数组、列表、元组、集合和映射_第4张图片
pic4

Scala进阶笔记---数组、列表、元组、集合和映射_第5张图片
image.png

Scala的Set类继承关系:

Scala进阶笔记---数组、列表、元组、集合和映射_第6张图片
pic5

Map同样分可变与不可变。缺省为不可变映射scala.collection.immutable.Map,代码如下:


Scala进阶笔记---数组、列表、元组、集合和映射_第7张图片
pic6

Scala的Map类继承关系

Scala进阶笔记---数组、列表、元组、集合和映射_第8张图片
pic7

你可能感兴趣的:(Scala进阶笔记---数组、列表、元组、集合和映射)