目录
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
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)



