大部分业务代码,都在处理数据!所以,高效很重要!!

作者:网友投稿 时间:2019-03-28 16:42

字号

 

大部分业务代码,都在处理数据!所以,高效很重要!!

一、序

在日常编写业务代码的时候,大部分代码其实就是在处理数据、展示数据,这些操作占用了我们大量的编码时间。

比较常见的,从某个集合中找到满足某个限制条件的数据。最简单的方法就是利用循环来遍历数据集合,找到我们需要的数据。

fun findFive() { 

    val list = arrayListOf(1, 2, 3, 4, 5, 6, 7) 

    val findList = mutableListOf<Int>() 

    for (i in list) { 

        if (i > 5) { 

            findList.add(i) 

        } 

    } 

    // findList 

大部分数据集合的操作,我们都可以通过循环来解决,针对一些更复杂的操作,例如从两个集合中找出交集集合,可以通过两层嵌套循环解决。

除了用粗暴的循环解决问题之外,我们还可以利用 Kotlin 对集合封装的一些高阶函数,让我们对集合的处理,更得心应手。

上面例子中的需求,用 Kotlin 集合的高阶函数,一个方法就可以解决。

val findList = list.filter { it > 5 } 

集合的高阶函数,还有很多更巧妙的使用方式。

本文就从业务场景出发,讲解 Kotlin 中与集合相关的一些高阶函数的使用和场景。

二、集合的高阶函数

Kotlin 原生就支持 Lambda 表达式,高阶函数中都可以基于 Lambda 来实现的。

假如我们需要实现一个公司内部的员工管理系统,那我们首先定义一个员工类(EmployeModel)。

data class EmployeModel(var id: Long, // 员工 ID 

                        var name: String,// 姓名 

                        var age: Int,// 年龄 

                        var department: String,// 部门 

                        var salary: Int // 薪水 

) { 

 

// var list = arrayListOf(EmployeModel(...),...) 

接下来我们就围绕这个员工类,实现各种必要的需求。

2.1 数据筛选

需求:从给定的员工列表中,筛选出月薪大于 2w 的所有员工。

正如前文中举例的样子,对于数据筛选,可以使用 .filter() 方法,此方法接受一个 Boolean 类型的条件,它会返回所有满足此条件的数据集合,最终其实返回的依然是一个 List。

var findList = list.filter {it.salary > 20000} 

.filter() 方法内不是其实也是用 for 循环来实现的,没有什么高深的。而除了filter() 之外,Kotlin 还提供了带上一些特殊条件的过滤器。

例如:

filterIndexed,带 Index 的过滤器。

filterNot,过滤所有不满足条件的数据。

这里就不展开了。

2.2 数据排序

需求:将给定的员工列表,根据员工的薪酬进行排序。

通过 sortedBy() 方法,指定排序依据,它会根据指定的数值,进行自然顺序排序。

var findList = list.sortedBy{it.salary} 

sortedBy() 方法为顺序排序,如果想要逆序排序,可以使用 sortedByDescending()方法。

需要注意的是,除了 sortedBy() 之外,配套的还有 sortBy() 和sortByDescending() 方法,这两套方法的区别在于操作的集合以及返回值是什么。

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>代码 数据 Kotlin
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接