Kotlin 中的分区过滤功能

在本篇文章中,我们将了解 Kotlin 过滤功能 - partition. 它通过谓词过滤集合,并将不匹配的元素保存在单独的列表中。

Kotlin 中有很多有用的集合函数。了解这些并根据要求使用它们是很好的。这些收集功能之一是partition.

partition通过谓词过滤集合,并将不匹配的元素保存在单独的列表中。

让我们通过例子来学习。

考虑如下data类User:

data class User(val id: Int, val name: String, val isMentor: Boolean)

并且,列表User:

val users = arrayOf(
    User(1, "Amit", true),
    User(2, "Ronaldo", false),
    User(1, "Messi", true),
    User(3, "Neymar", false))

现在,让我们使用partition这个用户列表上的功能来过滤导师用户和非导师用户。

val (mentors, notMentors) = users.partition { it.isMentor }

现在,让我们打印mentors

println(mentors)

这将打印以下内容:

[User(id=1, name=Amit, isMentor=true),
User(id=1, name=Messi, isMentor=true)]

而且,当我们打印notMentors

println(notMentors)

这将打印以下内容:

[User(id=2, name=Ronaldo, isMentor=false),
User(id=3, name=Neymar, isMentor=false)]

如果我们浏览源代码,我们会发现以下实现:

public inline fun <T> Array<out T>.partition(predicate: (T) -> Boolean): Pair<List<T>, List<T>> {
    val first = ArrayList<T>()
    val second = ArrayList<T>()
    for (element in this) {
        if (predicate(element)) {
            first.add(element)
        } else {
            second.add(element)
        }
    }
    return Pair(first, second)
}

它正在做同样的事情,我们也会做。只是 Kotlin 开箱即用地提供了这些有用的功能,以便我们可以直接使用它们。

笔记:

  • 它需要一个predicate.
  • 它将原始数组拆分为一对列表并返回Pair<List, List>。
  • 第一个列表包含predicate产生的元素true。
  • 第二个列表包含predicate产生的元素false。

现在就是这样。

如果你觉得kotlin很有意思,但却不知如何去学习,那么为了帮助想学习 Kotlin ,我近日整理发布一份《高级Kotlin强化实战学习手册(附Demo)》供Android开发者进阶学习 Kotlin,内容涵盖 Kotlin 入门教程、Kotlin实战避坑指南、Kotlin Jetpack 实战三大模块。

你可以在文末自己领取这份kotlin的学习资料

第一章 Kotlin入门教程
● Kotlin 概述
● Kotlin 与 Java 比较
● 巧用 Android Studio
● 认识 Kotlin 基本类型
● 走进 Kotlin 的数组
● 走进 Kotlin 的集合
● 集合问题
● 完整代码
● 基础语法

第二章 Kotlin 实战避坑指南
● 方法入参是常量,不可修改
● 不要 Companion 、INSTANCE ?
● Java 重载,在 Kotlin 中怎么巧妙过渡一下?
● Kotlin 中的判空姿势
● Kotlin 复写 Java 父类中的方法
● Kotlin “狠”起来,连TODO 都不放过!
● is、as` 中的坑
● Kotlin 中的 Property 的理解
● also 关键字
● takeIf 关键字
● takeIf 关键字
● 单例模式的写法

第三章 项目实战《Kotlin Jetpack 实战》
● 从一个膜拜大神的 Demo 开始
● Kotlin 写 Gradle 脚本是一种什么体验?
● Kotlin 编程的三重境界
● Kotlin 高阶函数
● Kotlin 泛型
● Kotlin 扩展
● Kotlin 委托
● 协程“不为人知”的调试技巧
● 图解协程:suspend

需要的小伙伴可以点击下面卡片免费领取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值