ZetCode

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 中过滤列表。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已经撰写了 1,400 多篇文章和 8 本电子书。我拥有超过十年的编程教学经验。

列出 所有 Kotlin 教程