快速删除集合中的元素

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}

removeIfremoveAll区别

删除带字母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") }

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

总结

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

相关推荐
刘名喜17 小时前
第17篇-PostgreSQL-Docker环境搭建
kotlin·springboot
plainGeekDev18 小时前
JUnit 4 → JUnit 5 + Kotlin
android·java·kotlin
plainGeekDev18 小时前
Mockito → MockK
android·java·kotlin
深色風信子19 小时前
Kotlin Bytedeco OpenCV 图像图像58 无缝克隆
开发语言·opencv·kotlin·bytedeco
我命由我1234520 小时前
Kotlin 面向对象 - 枚举排序
android·java·开发语言·java-ee·kotlin·android studio·android-studio
李斯维20 小时前
Kotlin 中的委托:by 关键字全解析
android·开发语言·kotlin
红尘伴蝶舞1 天前
Android 17 局域网调试与 ACCESS_LOCAL_NETWORK 权限隔离实践
kotlin·测试·设计
plainGeekDev2 天前
运行时获取依赖 → 编译时注入
android·java·kotlin
杉氧2 天前
用 Compose 挑战交互与动效天花板:ComposeCraftLab 开源实验室全解析
android·前端·kotlin
刘名喜2 天前
第09篇-协程基础-Kotlin异步编程
开发语言·kotlin·springboot