集合概述
集合通常包含相同类型的一些(数目也可以为零)对象。集合中的对象称为元素或者条目。下面是 Kotlin 相关的集合类型:
- List 是一个有序集合,可以通过索引访问元素。元素可以在 list 中出现多次。列表的一个示例是一句话:有一组字、这些字的顺序很重要并且字可以重复
- Set 是唯一元素的集合。它反映了集合(set)的数学抽象:一组无重复的对象。一般来说 set 中元素的顺序并不重要。例如,字母表是字母的集合(set)
- Map 是一组键值对。键是唯一的,每个键刚好映射到一个值。值可以重复。map 对于存储对象之间的逻辑链接非常有用
集合类型
Kotlin 标准库提供了基本集合类型的实现:set、list以及map。一对接口代表每种集合类型:
- 一个只读接口,通过访问集合元素的操作
- 一个可变接口,通过写操作扩展相应的只读接口:添加、删除和更新其元素
更改可变集合不需要它是以 var 定义的变量:写操作修改同一个可变集合对象,因此引用不会改变。也就是说虽然定义的是val类型的不可变的集合,我们可以改变集合里面的数据,但是我们的集合对象是没有改变的,所以对于val类型的集合也是可以改变其集合内部值的。但是,如果尝试对 val 集合重新赋值,那么将会收到编译错误。
只读集合类型是型变的。集合类型与元素类型具有相同的子类型关系(也就是说可以用子类去替换父类)。map在值(value)类型上是型变的,但是键(key)类型上不是
反之,可变集合不是型变的;否则将导致运行时故障。