跳到主要内容

Kotlin 程序:检查数组是否包含给定值

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

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 被找到了。")
else
println("$toFind 没有找到。")
}

当你运行程序时,输出将是:

3 被找到了。

在上述程序中,我们有一个整数数组存储在变量 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 被找到了。")
else
println("$toFind 没有找到。")
}

当你运行程序时,输出将是:

7 没有找到。

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

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

如果任何元素 n 返回 truefound 也被设置为 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 被找到了。")
else
println("$toFind 没有找到。")
}

当你运行程序时,输出将是:

Four 被找到了。

在上述程序中,我们使用了非基本数据类型 String 并使用 Arraysstream() 方法将其首先转换为流,然后使用 anyMatch() 来检查数组是否包含给定值 toFind

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