Kotlin 过滤列表
最后修改于 2024 年 1 月 29 日
本文展示了如何在 Kotlin 语言中过滤列表值。
Kotlin 拥有用于过滤列表数据的强大方法。
filter
方法返回一个仅包含与给定谓词匹配的元素的列表。谓词是一个单参数方法,返回一个布尔值。
Kotlin 过滤列表示例
在第一个示例中,我们使用 filter 函数。
simple.kt
package com.zetcode fun main() { val vals = listOf(2, -1, 0, 5, 4, 9, -5, 11, 7) val res = vals.filter { e -> e > 0 } println(res) val res2 = vals.filter { e -> e < 0 } println(res2) }
该示例从整数列表中筛选出正值和负值。
Kotlin filterNot
filterNot
方法返回与给定谓词不匹配的值。
filternot.kt
package com.zetcode fun main() { val vals = listOf(2, -1, 0, 5, 4, 9, -5, 11, 7) val res = vals.filterNot { it > 0 } println(res) val res2 = vals.filterNot { it in listOf(0, 5, 4) } println(res2) }
在该示例中,我们筛选出不大于零且不属于给定值列表的值。
过滤字符串
下一个示例过滤字符串。
filter_words.kt
package com.zetcode fun main() { val words = listOf("war", "cup", "cool", "cloud", "water", "ten", "pen") val res = words.filter { e -> e.length == 3 } println(res) val res2 = words.filter { e -> e.startsWith("w") } println(res2) }
我们有一个单词列表。我们筛选出所有大小等于 3 且以 'w' 开头的单词。
多个过滤条件
我们可以使用 &&
和 ||
运算符组合过滤条件。
multiple.kt
package com.zetcode fun main() { val words = listOf("war", "cup", "cool", "cloud", "water", "ten", "pen") val res = words.filter { e -> e.startsWith("w") || e.startsWith("c") } println(res) val res2 = words.filter { e -> e.startsWith("c") && e.contains("o") } println(res2) }
该示例筛选出以 'w' 或 'c' 开头的单词,以及以 'c' 开头并包含 'o' 的单词。
Kotlin 过滤对象
以下示例过滤汽车对象。
filter_objects.kt
package com.zetcode data class Car(val name: String, val price: Int) fun main() { val vals = listOf( Car("Audi", 52642), Car("Mercedes", 57127), Car("Skoda", 9000), Car("Volvo", 29000), Car("Bentley", 350000), Car("Citroen", 21000), Car("Hummer", 41400), Car("Volkswagen", 21601) ) val res = vals.filter { e -> e.name.startsWith("Vo") } println(res) val res2 = vals.filter { e -> e.price in 9001..49999 } println(res2) }
我们筛选出名称以 "Vo" 开头的汽车,以及价格在给定范围内的汽车。
来源
在本文中,我们展示了如何在 Kotlin 中过滤列表。
作者
列出 所有 Kotlin 教程。