介绍
本篇主要汇总一下数据操作中各种函数的定义。
其实在前面几篇文章中有关于各种聚合函数api的介绍,这里只是做为一个汇总查询,方便我后续调用时进行快速查询操作。
如果想了解详细的,可以通过以下文章了解。
Kotlin 集合 转换,过滤和检测 (zinyan.com)
Kotlin 集合 plus,minus和分组group详解 (zinyan.com)
函数式编程API 和链式调用
我们在针对集合和数组进行计算处理时,总共可以分为:遍历,排序,过滤,映射,聚合等。
而所有支持这几种计算的api,可以叫做函数式编程API,而这些api的命名方式通常都是:forEach,sort,map,filter,max,count等关键字。
而所谓的链式调用就是说,我们可以将多个函数式api通过链式进行批量调用。并得到最终的结果。
1.遍历函数 forEach 和 forEachIndexed
forEach
适用于Collection
和map
,以及Array
。在执行时forEach会把集合或数组中的每个元素传递给Lambda表达式或者其他函数。
fun main(args: Array<String>) {
var s = arrayListOf<String>("a", "B", "c", "E")
s.forEach {
println(it)
}
}
//输出
a
B
c
E
而如果想返回元素的数值的同时和获取它在集合中的下标,那么就可以通过forEachIndexed
进行返回了。
fun main(args: Array<String>) {
var s = arrayListOf<String>("a", "B", "c", "E")
s.forEachIndexed { i, b ->
println("$i : $b")
}
}
//输出
0 : a
1 : B
2 : c
3 : E
2. 过滤函数 filter
Kotlin 集合 转换,过滤和检测 (zinyan.com)
关于过滤函数有一个下面的查询表格,列出了一些常见函数的作用。
函数 | 返回数据 | 备注 |
---|---|---|
drop | List 集合 | 返回不包括前N个元素的List集合 |
filterNot | 集合 | 判断是有不符合条件的元素集合 |
filter | List或Map集合 | 返回满足过滤条件的元素集合 |
filterNotNull | 集合 | 返回满足条件的非空元素集合 |
slice | 集合 | 返回指定索引的元素集合 |
take | 集合 | 返回前N个元素的List集合 |
takeLast | 集合 | 返回后N个元素的集合对象 |
find | item对象 | 返回符合条件的第一个元素 |
findLast | item对象 | 返回符合条件的最后一个元素 |
first | item对象 | 返回第一个元素对象 |
last | item对象 | 返回最后一个元素对象 |
firstOrNull | item对象 | 返回符合条件的第一个元素,如果不存在返回null |
lastOrNull | item对象 | 返回符合条件的最后一个元素,如果不存在返回null |
3. 映射函数 map
常见的映射函数,主要就是将集合进行转换变化为List或map等。映射的意思就是将本集合数据转为另一种数据集。
关于常见的映射函数,请查询下表。
函数 | 返回数据 | 备注 |
---|---|---|
map | List | 返回一个List集合 |
mapNotNull | List | 返回一个List集合,过滤非空数据 |
mapIndexed | List | 返回一个List集合,包括原始数据的值和索引 |
flatMap | List | 将多维数据转为一维集合对象 |
4. 聚合函数 reduce
关于常见的聚合函数,请查询下表。
函数 | 返回数据 | 备注 |
---|---|---|
any | boolean | 如果至少有一个元素与指定的条件相同就返回true |
all | boolean | 如果所有元素都满足条件,返回true。 |
count | int | 返回指定条件的元素数量值 |
max | item对象 | 返回最大的item对象,如果没有就返回空 |
maxBy | item对象 | 返回指定函数产生最大值的第一个元素,如果没有就返回空 |
min | int | 返回最小的item对象,如果没有就返回null |
minBy | item对象 | 返回指定函数产生最小值的第一个元素,如果没有就返回空 |
sum | item对象 | 返回所有元素的和 |
sumBy | item对象 | 返回指定函数计算集合元素总和 |
average | double | 返回所有元素的平均值 |
none | boolean | 如果没有元素与指定条件符合,则返回true。有符合就返回false |
5. 排序函数 sorted
关于常见的排序函数api,请查询下表:
函数 | 返回数据 | 备注 |
---|---|---|
sorted | 集合 | 升序 |
sortedBy | 集合 | 指定函数计算之后,再进行升序 |
sortedDescending | 集合 | 降序 |
sortedByDescending | 集合 | 指定函数计算之后,再进行降序 |
reversed | 集合 | 倒置 |
评论区