栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kotlin一些比较好用的高阶函数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kotlin一些比较好用的高阶函数

目录

1、maxBy和maxBy

2、filter

3.map

 4.any

5、count

6.find


1、maxBy和maxBy

        maxBy和minBy就是求得最大值和最小值的方法。通常,在Java中我们是这样求得最大值与最小值的(普通方法)

maxBy 函数原型 : 获取集合中某个元素的某个字段最大值的元素 , 如果有多个最大值元素 , 那么返回第一个 ;

minBy 函数原型 : 获取集合中某个元素的某个字段最小值的元素 , 如果有多个最小值元素 , 那么返回第一个 ;

eg.找出最大年龄的学生

data class Student(var name : String, var age : Int, var height : Int)

var students : List = listOf(
    Student("Tom", 12, 190),
    Student("Jerry", 18, 165),
    Student("Trump", 18, 178),
    Student("Jack", 29, 165)
)

//...

// 获取年龄最大的学生
val maxAgeStudent = students.maxBy { it.age }
println(maxAgeStudent)
Student(name=Jack, age=29, height=165)

2、filter

        filter是一个过滤器,能够通过各种条件过滤出符合该条件的数据。

filter 函数原型 : 返回 List 集合 , 该集合中的元素全部符合传入的 predicate: (T) -> Boolean 类型函数要求 , 即执行该 (T) -> Boolean 类型函数 , 传入 T 元素对象 , 返回值为 true ; 传入一个函数 , 该函数判定集合中的每个元素是否符合某种要求 ;

eg.筛选出年龄大于 15 , 并且身高小于 180 的学生

data class Student(var name : String, var age : Int, var height : Int)

var students : List = listOf(
    Student("Tom", 12, 190),
    Student("Jerry", 18, 165),
    Student("Trump", 18, 178),
    Student("Jack", 29, 165)
)

//...

// 筛选出年龄大于 15 , 并且身高小于 180 的学生 , 其返回值是一个集合
//  后面可以有多个 and 连接多个判断语句
val ageH15HeightLow180 = students.filter {
    (it.age > 15 ) and (it.height < 180)
}
println(ageH15HeightLow180)
[Student(name=Jerry, age=18, height=165), Student(name=Trump, age=18, height=178), Student(name=Jack, age=29, height=165)]

3.map

map 函数原型 : 返回 List 集合 , 该集合中的元素的类型是一个生成的新类型 , 该类型是根据原来的集合 List 元素进行转换映射成的新类型 ; 传入一个函数 , 该函数将集合中的每个元素进行某种转换 , 产生一个新类型元素 ;

eg.将 Student 对象中的 姓名 和 年龄抽取出来 , 拼接成 "姓名 : 年龄" 字符串

data class Student(var name : String, var age : Int, var height : Int)

var students : List = listOf(
    Student("Tom", 12, 190),
    Student("Jerry", 18, 165),
    Student("Trump", 18, 178),
    Student("Jack", 29, 165)
)

//...

//将 Student 对象中的 姓名 和 年龄抽取出来 , 拼接成 "姓名 : 年龄" 字符串, 放到一个新的 字符串集合中
val studentNameAgess = students.map {
    "${it.name} : ${it.age}"
}
println(studentNameAgess)
[Tom : 12, Jerry : 18, Trump : 18, Jack : 29]

 4.any

any 函数原型 : 返回该集合中是否存在某个元素 ; 传入一个函数 , 该函数判定集合中的每个元素是否符合某种要求 ;

 eg.集合中是否有 18 岁的学生

data class Student(var name : String, var age : Int, var height : Int)

var students : List = listOf(
    Student("Tom", 12, 190),
    Student("Jerry", 18, 165),
    Student("Trump", 18, 178),
    Student("Jack", 29, 165)
)

//...

//集合中是否有 18 岁的学生
val is18AgeExist : Boolean = students.any{
    it.age == 18
}
println(is18AgeExist)
true

5、count

count 函数原型 : 返回该集合中符合给定谓词要求的元素个数 ; 传入一个函数 , 该函数用于判定元素是否符合要求;

eg.查找年龄小于 19 岁的学生个数

data class Student(var name : String, var age : Int, var height : Int)

var students : List = listOf(
    Student("Tom", 12, 190),
    Student("Jerry", 18, 165),
    Student("Trump", 18, 178),
    Student("Jack", 29, 165)
)

//...

//查找年龄小于 19 岁的学生个数
val ageLess19 : Int = students.count {
    it.age < 19
}
println(ageLess19)
3

6.find

find 函数原型 : 返回该集合中符合给定谓词要求的第一个元素 ; 

eg. 查找第一个年龄 18 岁的学生

data class Student(var name : String, var age : Int, var height : Int)

var students : List = listOf(
    Student("Tom", 12, 190),
    Student("Jerry", 18, 165),
    Student("Trump", 18, 178),
    Student("Jack", 29, 165)
)

//...

//查找第一个年龄 18 岁的学生
val first18Student = students.find {
    it.age == 18
}
println(first18Student)
Student(name=Jerry, age=18, height=165)

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/657996.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号