快速删除集合中的元素

List

删除包含字母A的元素:

kotlin 复制代码
fun main() {
    val list = mutableListOf("ABC", "DEF", "AEE")
    println(list)
    val hasRemove = list.removeIf { it.contains("A") }
    println("hasRemove: $hasRemove")
    println(list)
}

运行结果如下:

复制代码
[ABC, DEF, AEE]
hasRemove: true
[DEF]

Map

删除key中包含字母A的元素:

kotlin 复制代码
fun main() {
    val map = mutableMapOf("ABC" to "ABC", "DEF" to "DEF", "AEE" to "AEE")
    println(map)
    val hasRemove = map.entries.removeIf { it.key.contains("A") }
    println("hasRemove: $hasRemove")
    println(map)
}

运行结果如下:

复制代码
{ABC=ABC, DEF=DEF, AEE=AEE}
hasRemove: true
{DEF=DEF}

removeIf和removeAll区别

删除带字母o的元素:

kotlin 复制代码
fun main() {
    val set = mutableSetOf("one", "two", "three", "four", "five")
    println(set)
    val remove = set.removeIf { it.contains("o") }
    println("remove = $remove")
    println(set)
}

输出:

复制代码
[one, two, three, four, five]
remove = true
[three, five]

改用removeAll效果一样:

kotlin 复制代码
val remove = set.removeAll { it.contains("o") }

removeIf 是Java8集合中的标准函数,removeAll则为kotlin扩展函数,在低版本也可以使用,且函数名含义更好。

总结

这种方式代码简洁,如果是自己用for循环,在循环中找到要删除的元素,然后调用remove,这会引发异常,需要使用Iterator来遍历才可以删除,但是代码比较多。

相关推荐
alexhilton21 小时前
用Konsist与Lint强制执行设计系统契约
android·kotlin·android jetpack
唐青枫1 天前
Kotlin Delegation 委托详解
kotlin
传奇开心果2 天前
Compose Multiplatform 共享边界实战:架构契约、互操作同步与可回退设计
android·kotlin
腾讯端服务2 天前
一码Duo端-Kuikly-iOS折叠屏新UI适配实践
android·ui·ios·kotlin·鸿蒙
传奇开心果3 天前
【Compose Multiplatform跨端声明式UI实用技术】第19课:多平台部署与发布
android·kotlin
红尘伴蝶舞3 天前
加密拦截器让抓包失效,我只能从 4KB 的 logcat 碎片里拼回 JSON
android·kotlin·ai编程
JMchen3 天前
【Jetpack 内核实战 08 】:组件整合——DataStore + Room 构建离线优先架构
架构·kotlin·android jetpack
Kapaseker3 天前
AI 会干掉 React Native 吗?
android·kotlin
程序员清风4 天前
算法题中的边界条件、测试与调试
开发语言·算法·kotlin
小宋10214 天前
用户点踩后怎么变成回归用例:请求快照、反馈聚类与复现率验收
人工智能·回归·kotlin·聚类