常见的过滤函数除了 filter 外还有14个,如下:
函数 | 适用类型 | 返回数据 | 说明 |
---|---|---|---|
drop | Collection集合或数组 | List集合 | 返回不包括前n个元素的List集合 |
filterNot | Collection集合、Map集合或数组 | 布尔值 | 与filter相反,过滤出不符合条件的数据 |
filterNotNull() | Collection集合或Array数组 | List集合 | 返回非空元素List集合。注意Array数组是对象数组,不能是IntArray和FloatArray等基本数据类型数组 |
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
网友评论