Kotlin 判断数组是否包含给定值的程序

示例 1:检查整数数组是否包含给定值

fun main(args: Array<String>) {

    val num = intArrayOf(1, 2, 3, 4, 5)
    val toFind = 3
    var found = false

    for (n in num) {
        if (n == toFind) {
            found = true
            break
        }
    }

    if (found)
        println("$toFind is found.")
    else
        println("$toFind is not found.")
}

运行程序后,输出将是

3 is found.

在上面的程序中,我们有一个存储在变量 num 中的整数数组。同样,要查找的数字存储在 toFind 中。

现在,我们使用 `for-in` 循环遍历 num 的所有元素,并单独检查 toFind 是否等于 n

如果是,我们将 found 设置为 `true` 并从循环中中断。如果不是,我们移动到下一个迭代。


示例 2:使用 Stream 检查数组是否包含给定值

import java.util.stream.IntStream

fun main(args: Array<String>) {

    val num = intArrayOf(1, 2, 3, 4, 5)
    val toFind = 7

    val found = IntStream.of(*num).anyMatch { n -> n == toFind }

    if (found)
        println("$toFind is found.")
    else
        println("$toFind is not found.")
}

运行程序后,输出将是

7 is not found.

在上面的程序中,我们没有使用 foreach 循环,而是将数组转换为 `IntStream` 并使用其 `anyMatch()` 方法。

`anyMatch()` 方法接受一个谓词,一个返回布尔值的表达式或函数。在我们的例子中,谓词将流中的每个元素 ntoFind 进行比较,并返回 `true` 或 `false`。

如果任何元素 n 返回 `true`,则 found 也被设置为 `true`。


示例 3:检查数组是否包含非原始类型值的给定值

import java.util.Arrays

fun main(args: Array<String>) {

    val strings = arrayOf("One", "Two", "Three", "Four", "Five")
    val toFind = "Four"

    val found = Arrays.stream(strings).anyMatch { t -> t == toFind }

    if (found)
        println("$toFind is found.")
    else
        println("$toFind is not found.")
}

运行程序后,输出将是

Four is found.

在上面的程序中,我们使用了非原始数据类型 `String`,并使用 `Arrays` 的 `stream()` 方法将其转换为流,然后使用 `anyMatch()` 检查数组是否包含给定的值 toFind

这是等效的 Java 代码:Java 程序检查数组是否包含给定值

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战