Learning Kotlin: 集合
与数组不同的是可变集合的大小可以动态改变。
List
:是一个 有序列表
, 可通过索引(下标)访问元素。元素可以在 list 中出现多次、元素可重复
。
Set
是 元素唯一的集合
。一般来说 set 中元素的顺序并不重要、无序集合、
Map
(字典)是一组键值对
。键
是唯一的,每个键都刚好映射到一个值,值可以重复
。
集合创建方式 | 示例 | 说明 | 是否可变 |
---|---|---|---|
arrayListOf mutableLIstOf 相同元素类型的列表 |
val list= arrayListOf val list= mutableLIstOf |
- 必须指定元素类型 | 可变 |
listOf 相同元素类型的列表 |
val list= listOf |
- 必须指定元素类型 - 必须指定初始化数据元素 |
不可变 |
arrayMapOf<K,V>() mutableMapOf<K,V>() 相同元素类型的字典 |
val map= arrayMapOf(Pair(“key”, “value”)) val map= mutableMapOf<String, String>() |
- 初始元素使用 Pair 包装 | 可变 |
mapOf 相同元素类型的字典 |
val map= mapOf(Pair(“key”, “value”)) | - 元素使用 Pair 包装 - 必须指定初始元素 |
不可变 |
arraySetOf mutableSetOf 相同元素类型的集合 |
val set = arraySetOf val set = mutableSetOf |
- 会对元素自动去重 | 可变 |
setOf 相同元素类型的集合 |
val set = setOf |
- 对元素自动去重 - 必须指定元素类型 |
不可变 |
Learning Kotlin: Lambda 表达式
方法声明:
- 普通类的方法
- 静态类的方法
- companion object 伴生类的方法
1 | fun max(a: Int, b: Int): Int { |
普通类的方法
1 | class Person { |
静态类的方法
1 | object Util { |
companion object 伴生类的方法
1 | class Person { |
方法参数
- 默认参数
- 具名参数
- 可变数量的参数
默认参数
方法参数可以有默认值,当省略相应的参数时使用默认值。
1 | fun read(offset: Int = 0, start: Int) {} |
具名参数
如果一个默认参数在一个无默认值的参数之前,那么无默认值的参数,通过具名参数
赋值
1 | fun read(offset: Int = 0, start: Int) {} |
如果最后一个参数是方法,那么它既可以作为具名参数在括号内传入,也可以在括号外传入。
1 | fun read(offset: Int = 0, start: Int, action:() -> Unit){} // action 为方法参数 |
可变数量的参数(Varargs)
1 | fun append(vararf str: Str): String { |
1 | val world = charArrayOf('w', 'o', 'r', 'l', 'd') |
可变参数的要求:
- 只有一个参数可以标注为
vararg
; - 如果 vararg 不是最后一个参数,可以使用具名参数语法,给后面的参数传递值。
Lambda 表达式
隐形参数 it
:
- it 并不是 Kotlin 中的一个关键字(保留字)
- it 是在当一个高阶方法中 Lambda 表达式的参数只有一个的时候可以使用 it 来使用此参数
- it 可表示为单个参数的隐式名称,是 Kotlin 语言约定的