侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 290 篇文章
  • 累计创建 57 个标签
  • 累计收到 98 条评论

Kotlin 函数式API,遍历操作,过滤操作,映射,聚合和排序API汇总

Z同学
2022-03-06 / 0 评论 / 2 点赞 / 270 阅读 / 2,009 字
温馨提示:
本文最后更新于 2022-03-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

本篇主要汇总一下数据操作中各种函数的定义。

其实在前面几篇文章中有关于各种聚合函数api的介绍,这里只是做为一个汇总查询,方便我后续调用时进行快速查询操作。

如果想了解详细的,可以通过以下文章了解。

Kotlin 集合 转换,过滤和检测 (zinyan.com)

Kotlin 集合 plus,minus和分组group详解 (zinyan.com)

Kotlin 集合 排序详解 (zinyan.com)

Kotlin 集合 聚合操作详解 (zinyan.com)

函数式编程API 和链式调用

我们在针对集合和数组进行计算处理时,总共可以分为:遍历,排序,过滤,映射,聚合等。

而所有支持这几种计算的api,可以叫做函数式编程API,而这些api的命名方式通常都是:forEach,sort,map,filter,max,count等关键字。

而所谓的链式调用就是说,我们可以将多个函数式api通过链式进行批量调用。并得到最终的结果。

1.遍历函数 forEach 和 forEachIndexed

forEach 适用于Collectionmap,以及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)

关于过滤函数有一个下面的查询表格,列出了一些常见函数的作用。

函数返回数据备注
dropList 集合返回不包括前N个元素的List集合
filterNot集合判断是有不符合条件的元素集合
filterList或Map集合返回满足过滤条件的元素集合
filterNotNull集合返回满足条件的非空元素集合
slice集合返回指定索引的元素集合
take集合返回前N个元素的List集合
takeLast集合返回后N个元素的集合对象
finditem对象返回符合条件的第一个元素
findLastitem对象返回符合条件的最后一个元素
firstitem对象返回第一个元素对象
lastitem对象返回最后一个元素对象
firstOrNullitem对象返回符合条件的第一个元素,如果不存在返回null
lastOrNullitem对象返回符合条件的最后一个元素,如果不存在返回null

3. 映射函数 map

常见的映射函数,主要就是将集合进行转换变化为List或map等。映射的意思就是将本集合数据转为另一种数据集。

关于常见的映射函数,请查询下表。

函数返回数据备注
mapList返回一个List集合
mapNotNullList返回一个List集合,过滤非空数据
mapIndexedList返回一个List集合,包括原始数据的值和索引
flatMapList将多维数据转为一维集合对象

4. 聚合函数 reduce

关于常见的聚合函数,请查询下表。

函数返回数据备注
anyboolean如果至少有一个元素与指定的条件相同就返回true
allboolean如果所有元素都满足条件,返回true。
countint返回指定条件的元素数量值
maxitem对象返回最大的item对象,如果没有就返回空
maxByitem对象返回指定函数产生最大值的第一个元素,如果没有就返回空
minint返回最小的item对象,如果没有就返回null
minByitem对象返回指定函数产生最小值的第一个元素,如果没有就返回空
sumitem对象返回所有元素的和
sumByitem对象返回指定函数计算集合元素总和
averagedouble返回所有元素的平均值
noneboolean如果没有元素与指定条件符合,则返回true。有符合就返回false

5. 排序函数 sorted

关于常见的排序函数api,请查询下表:

函数返回数据备注
sorted集合升序
sortedBy集合指定函数计算之后,再进行升序
sortedDescending集合降序
sortedByDescending集合指定函数计算之后,再进行降序
reversed集合倒置
2

评论区