快速上手 Kotlin 开发系列之操作符
Posted 张鹿鹿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速上手 Kotlin 开发系列之操作符相关的知识,希望对你有一定的参考价值。
本节介绍操作符的实现原理以及一些常用的操作符。
为了方便理解,我们把作用域函数和集合操作符统称为 Kotlin 的操作符。
操作符的实现原理
作用域函数与集合操作符的原理是完全一致的,这里以集合操作符作为一个例子来看整个作用域函数和集合操作符的运行原理。
来看下这个 Kotlin 内置的操作符 forEach,它其实是对泛型为 T 的 Iterable 的一个扩展函数,其实内部就是执行了 for-in 形式的循环,this 表示当前 T 泛型的 Iterable 对象,循环执行 action 方法,也就是我们传入的 Lambda 闭包。
public inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit
for (element in this) action(element)
同样的,之前写过的自定义扩展函数 convert,也是这样的原理:
inline fun <T, E> Iterable<T>.convert(action: (T) -> E): MutableList<E>
val list: MutableList<E> = mutableListOf()
for (item in this) list.add(action(item))
return list
所以基本上不管是作用域函数还是之前提到的集合操作符,它的本质都是扩展函数,或者类似于扩展函数的形式为我们的代码进行一系列的扩展操作。
常用操作符
下面为大家列出了 Kotlin 中集合常用的操作符,这些操作符没有必要去记它,只需要根据编译器的提示去使用即可。
元素操作类
操作符 | 描述 |
---|---|
contains | 判断是否有指定元素 |
elementAt | 返回对应的元素,越界会抛 ArrayIndexOutOfBoundsException |
firstOrNull | 返回符合条件的第一个元素,没有返回 null |
lastOrNull | 返回符合条件的最后一个元素,没有返回 null |
indexOf | 返回指定元素的下标,没有返回 -1 |
singleOfNull | 返回符合条件的单个元素,如有没有符合或者超过一个,返回 null |
判断类
操作符 | 描述 |
---|---|
any | 判断集合中是否有满足条件的元素 |
all | 判断集合中的元素是否都满足条件 |
none | 判断集合中是否都不满足条件,是则返回 true |
count | 查询集合中满足条件的元素个数 |
reduce | 从第一项到最后一项进行累计 |
过滤类
操作符 | 描述 |
---|---|
filter | 过滤所有满足条件的元素 |
filterNot | 过滤所有不满足条件的元素 |
filterNotNull | 过滤 null |
take | 返回前 n 个元素 |
转换类
操作符 | 描述 |
---|---|
map | 转换成另一个集合(与之前提到的 convert 类似) |
mapIndexed | 除了转换成另一个集合,还可以拿到 Index 下标 |
mapNotNull | 执行转换前过滤掉 null 的元素 |
flatMap | 自定义逻辑合并两个集合 |
groupBy | 按照某个条件分组,返回 map |
排序类
操作符 | 描述 |
---|---|
reversed | 反序 |
sorted | 升序 |
sortedDescending | 降序 |
sortedBy | 自定义排序 |
以上就是本节内容,欢迎大家关注~
以上是关于快速上手 Kotlin 开发系列之操作符的主要内容,如果未能解决你的问题,请参考以下文章