美文网首页
Kotlin中函数式编程API(5)✔️过滤函数

Kotlin中函数式编程API(5)✔️过滤函数

作者: 狼性代码人 | 来源:发表于2019-06-13 18:24 被阅读0次

    常见的过滤函数除了 filter 外还有14个,如下:

    函数 适用类型 返回数据 说明
    drop Collection集合或数组 List集合 返回不包括前n个元素的List集合
    filterNot Collection集合、Map集合或数组 布尔值 filter相反,过滤出不符合条件的数据
    filterNotNull() Collection集合或Array数组 List集合 返回非空元素List集合。注意Array数组是对象数组,不能是IntArrayFloatArray等基本数据类型数组
    slice Collection集合或数组 List集合 返回指定索引的元素List集合
    take Collection集合或数组 List集合 返回前n个元素List集合
    takeLast Collection集合或数组 List集合 返回后n个元素List集合
    find Collection集合或数组 元素自身类型 返回符合条件的第一个元素,如果没有符合条件的元素,则返回空值
    findLast Collection集合或数组 元素自身类型 返回符合条件的最后一个元素,如果没有符合条件的元素,则返回空值
    first() Collection集合或数组 元素自身类型 返回第一个元素,函数没有参数
    last() Collection集合或数组 元素自身类型 返回最后一个元素,函数没有参数
    first { } Collection集合或数组 元素自身类型 返回符合条件的第一个元素,函数有一个参数。如果没有符合条件的元素,抛出异常
    last { } Collection集合或数组 元素自身类型 返回符合条件的最后一个元素,函数有一个参数。如果没有符合条件的元素,抛出异常
    firstOrNull { } Collection集合或数组 元素自身类型 返回符合条件的第一个元素,函数有一个参数。如果没有符合条件的元素,则返回空值
    lastOrNull { } Collection集合或数组 元素自身类型 返回符合条件的最后一个元素,函数有一个参数。如果没有符合条件的元素,则返回空值
    • 案例
    fun main(args: Array<String>?) {
        val map = mapOf(102 to "小三", 105 to "小鱼", 109 to "小五")
        val ints = intArrayOf(1, 3, 34, 54, 75)
        val charList = listOf("A", null, "B", "C")
    
        println(charList.drop(2))
        println(map.filterNot { it.key > 105 })
        println(charList.filterNotNull())
        println(ints.slice(1..3))
        println(ints.slice(listOf(0, 1, 3)))
        println(ints.take(2))
        println(ints.takeLast(3))
        println(ints.find { it > 40 })
        println(ints.findLast { it > 40 })
        println(ints.first())
        println(ints.last())
        println(ints.first { it > 40 })
        println(ints.last { it > 40 })
        println(ints.firstOrNull { it > 40 })
        println(ints.lastOrNull { it > 40 })
    }
    
    // 输出结果
    
    2019-06-13 18:21:15.908 I: [B, C]
    2019-06-13 18:21:15.908 I: {102=小三, 105=小鱼}
    2019-06-13 18:21:15.908 I: [A, B, C]
    2019-06-13 18:21:15.949 I: [3, 34, 54]
    2019-06-13 18:21:15.949 I: [1, 3, 54]
    2019-06-13 18:21:15.949 I: [1, 3]
    2019-06-13 18:21:15.949 I: [34, 54, 75]
    2019-06-13 18:21:15.949 I: 54
    2019-06-13 18:21:15.950 I: 75
    2019-06-13 18:21:15.950 I: 1
    2019-06-13 18:21:15.950 I: 75
    2019-06-13 18:21:15.950 I: 54
    2019-06-13 18:21:15.950 I: 75
    2019-06-13 18:21:15.950 I: 54
    2019-06-13 18:21:15.951 I: 75
    

    相关文章

      网友评论

          本文标题:Kotlin中函数式编程API(5)✔️过滤函数

          本文链接:https://www.haomeiwen.com/subject/lftefctx.html