kotlin filter 过滤集合(filterIndexed,filterNot,filterIsInstance,filterNotNull)

filter 在kotlin中一个高阶函数属于过滤集合中其中之一

filter作用:

用于根据提供的谓词函数过滤出集合中的元素,注意谓词只能检查元素的值,谓词可以理解为判断条件

举例:检查集合中长度大于3的元素

val numbers = listOf("one", "two", "three", "four")
val langThan3 = numbers.filter { it.length>3 }
// 打印结果 [three, four]
Log.d("=======langThan3", langThan3.toString())

filterIndexed

如果想在过滤中使用元素在集合中的位置,应该使用 filterIndexed()。它接受一个带有两个参数的谓词:元素的索引和元素的值。

举例:检查长度小于5且不是第一个的元素

        val numbers = listOf("one", "two", "three", "four")
        val filteredIdx = numbers.filterIndexed { index, s -> (index != 0) && (s.length < 5)  }
//         打印结果[two, four]
        Log.d("=======filteredIdx", filteredIdx.toString())

filteredNot

filteredNot :否定条件来过滤集合

举例:检查长度不小于3的元素

        val numbers = listOf("one", "two", "three", "four")
        val filteredNot = numbers.filterNot { it.length <= 3 }
        //打印结果 [three, four]
        Log.d("=======filteredNot", filteredNot.toString())

filterIsInstance

filterIsInstance() 返回给定类型的集合元素。在一个 List<Any> 上被调用时,filterIsInstance<T>() 返回一个 List<T>, 从而让你能够在集合元素上调用 T 类型的函数。

举例:过滤集合中int,类型,String 类型

        val numbers = listOf(null, 1, "two", 3.0, "four")
        numbers.filterIsInstance<Int>().forEach {
            // 打印结果是1
            Log.d("=======int元素", it.toString())
        }
        numbers.filterIsInstance<String>().forEach {
            // 打印结果是two, four
            Log.d("=======String元素", it)
        }

filterNotNull

filterNotNull() 返回所有的非空元素

val numbers = listOf(null, "one", "two", null)
        numbers.filterNotNull().forEach {
            // 打印结果 one two
            Log.d("=======元素", it)
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值