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),表达式或返回布尔值的函数。在我们的例子中,谓词将流中的每个元素 n
与 toFind
进行比较,并返回 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 被找到了。")
else
println("$toFind 没有找到。")
}
当你运行程序时,输出将是:
Four 被找到了。
在上述程序中,我们使用了非基本数据类型 String
并使用 Arrays
的 stream()
方法将其首先转换为流,然后使用 anyMatch()
来检查数组是否包含给定值 toFind
。
这是等效的 Java 代码:Java 程序检查数组是否包含给定值。