快速删除集合中的元素

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来遍历才可以删除,但是代码比较多。

相关推荐
不要喷香水11 小时前
00-总览与架构
kotlin·app·档案管理
hai_android12 小时前
Android 组件化开发实践
android·java·kotlin
传奇开心果编程1 天前
【Jetpack Compose基础语法学与练】第6课 TextField文本输入,字符串状态与输入交互
学习·前端框架·kotlin·android jetpack
ai2work2 天前
ch06 Jetpack Compose 入门:状态驱动 UI
kotlin
JMchen2 天前
第 12 篇|项目整合与打包发布 —— 从 Demo 到可安装 APK 的完整收官指南
kotlin·android studio
Android打工仔2 天前
不要在 Data 层随意把 Cold Flow 转换成 Hot Flow
android·架构·kotlin
杉氧2 天前
拒绝重复造轮子:我写了一个生产级的 Kotlin 协程与 Flow 工具库(CoroutineKit)
android·kotlin·workflow
JMchen3 天前
第 9 篇|网络请求基础 —— 从 HttpURLConnection 到 OkHttp
kotlin·android studio
hai_android4 天前
Kotlin Flow combine 源码剖析:一个 Channel 如何优雅合并多条流
android·java·kotlin
敲代码的瓦龙4 天前
Jetpack?ViewModel!!!
android·开发语言·kotlin·android-studio