美文网首页
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