kotlin高阶函数演示代码

学习了kotlin这些内置的高阶函数,属实方便

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

var StudentDataBase = listOf(
    Student("张三", 18, 165, "山东"),
    Student("张三", 19, 166, "北京"),
    Student("张三", 18, 167, "江苏"),
    Student("张三", 17, 168, "河北"),
    Student("张三", 15, 169, "新疆"),
    Student("张三", 20, 163, "宁夏"),
    Student("张三", 25, 163, "甘肃"),
    Student("张三", 21, 162, "浙江"),
    Student("张三", 27, 161, "广东"),
    Student("张三", 34, 170, "广西"),
    Student("张三", 32, 180, "四川"),
    Student("张三", 8, 176, "福建"),
    Student("张三", 12, 187, "河南")
)

//DSL
//扩展函数年龄小于多少岁
fun List<Student>.findAgeLessThan(age: Int) {
    filter {
        it.age < age
    }.forEach(::println)
}

//中缀表达式infix 可以省略 . 或者 () 用空格代替
//扩展函数年龄大于多少岁
infix fun List<Student>.findAgeGreaterThan(age: Int) {
    filter {
        it.age > age
    }.forEach(::println)
}

main函数

fun main() {
    //maxBy
    println("======maxBy 最大============")
    println("年龄最大的学生=======${StudentDataBase.maxBy { it.age }}")
    println("身高最高的学生=======${StudentDataBase.maxBy { it.height }}")
    //minBy
    println("======minBy  最小============")
    println("年龄最小的学生=======${StudentDataBase.minBy { it.age }}")
    println("身高最矮的学生=======${StudentDataBase.minBy { it.height }}")

    //filter
    println("======filter  过滤特定条件============")
    println("过滤年龄大于18并且身高大于170的学生=======${StudentDataBase.filter { 
        (it.age>18) and (it.height>170)
    }}")
    //map
    println("======map  把某个属性映射成新的集合============")
    var mapResult= StudentDataBase.map {
        "${it.name}:${it.age}"
    }
    println("将名字和年龄映射成一个新的集合${mapResult}")
    //any
    println("======any  是否满足某个条件============")
    println("是否有年龄为18的学生:${StudentDataBase.any {
        it.age==18
    }}")
    //count
    println("======count  统计符合条件的个数============")
    println("统计身高为163的个数:${StudentDataBase.count {
        it.height==163
    }}")
    //find
    println("======find  查找第一个符合条件的============")
    println("查找第一个身高为163的学生:${StudentDataBase.find {
        it.height==163
    }}")
    //groupBy
    println("======groupBy  按照特征分为不同的组============")
    var groupResult= StudentDataBase.groupBy {
        it.address
    }
    println("按照籍贯进行分组:${groupResult}")
    groupResult.get("山东")?.forEach { println(it) }


    //扩展函数
    println("======扩展函数==========")
    //年龄小于xx岁
    StudentDataBase.findAgeLessThan(15)
    //中缀表达式 可以省略. 用空格代替
    println("======中缀表达式==========")
    //年龄大于xx岁
    StudentDataBase findAgeGreaterThan 30


}

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值