集合
简单了解集合
Kotlin
标准库提供了⼀整套⽤于管理集合
的⼯具,集合是可变数量(可能为零)的⼀组条⽬,各种集合对于解决问题都具有重要意义,并且经常⽤到。
集合通常包含相同类型的⼀些(数⽬也可以为零)对象。集合中的对象称为元素
或条⽬
。例如,⼀个系的所有学⽣组成⼀个集合,可以⽤于计算他们的平均年龄.以下是 Kotlin
相关的集合类型:
集合种类
种类 | 特点 | 样例 |
---|---|---|
List | 1.有序集合,可以通过索引访问元素 2.元素可以在list出现多次 | 有一组字,这些字的顺序很重要并且字可以重复 |
Set | 1.一组无重复元素的集合 | 字母表是字母的集合 |
Map | 1.一组键值对形式存储 2.键时唯一的,每个键刚好对应一个值 3.值可以重复 | 员工的ID与员工的位置 |
集合类型
集合按照类型分类可以分为两类
- 可变集合
- 不可变集合
不可变集合
- List集合
- Map集合
- Set集合
可变集合
- MutableList集合
- MutableMap集合
- MutableSet集合
集合的源码结构
先看下类的关系图:
类作用解释:
Iterable
接口是声明迭代元素的方法,实现了此接口的类代表了此类可以进行迭代操作
Collection
接口是只声明大小,判空,判断是否包含某元素,简单操作方法,(说人话:实现这个接口的集合类都只能进行读操作)
MutableIterable
接口里面什么方法都没有声明,只是个充数的
MutableCollection
接口声明了add
,remove
,addAll
,removeAll
,retainAll
,clear
. (说白了,实现这个接口的集合都都可以进行写操作)
list
接口声明了一些根据下标查询原始的操作(也是单纯只有读的操作)
MutableList
接口结合了list
的读操作与MutableCollection
接口的写操作
set
接口单纯的实现了collection
的读操作
MutableSet
接口实现了set
接口的读操作与MutableCollection
接口的写操作
Map
接口声明了一些只读操作(但是里面有两个属性,一个是Set类型的entries一个是Collection类型的values,数据都是存在这两个属性里面的)
MutableMap
接口不过实现了map
接口里面的读操作,自身还声明了一些写操作
可直接使用的集合类
list种类集合
集合类名 | 是否可变 | 备注 |
---|---|---|
list | 不可变 | |
MutableList | 可变 | |
ArrayList | 可变 | 使用java 的ArrayList |
set种类集合
集合类名 | 是否可变 | 备注 |
---|---|---|
set | 不可变 | |
MutableSet | 可变 | |
EmptySet | 不可变 | 就是长度为0的set |
linkedSetOf | 可变 | 使用java 的LinkedHashSet |
map种类集合
集合类名 | 是否可变 | 备注 |
---|---|---|
map | 不可变 | |
MutableMap | 可变 | |
emptyMap | 不可变 | 大小为0的map |
SortedMap | 不可变 | 可创建时传入值,创建后不可变 |
linkedMapOf | 可变 | 使用java 的LinkedHashMap |
hashMapOf | 可变 | 使用java 的HashMap |