示例 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()` 方法接受一个谓词,一个返回布尔值的表达式或函数。在我们的例子中,谓词将流中的每个元素 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 is found.")
else
println("$toFind is not found.")
}
运行程序后,输出将是
Four is found.
在上面的程序中,我们使用了非原始数据类型 `String`,并使用 `Arrays` 的 `stream()` 方法将其转换为流,然后使用 `anyMatch()` 检查数组是否包含给定的值 toFind。
这是等效的 Java 代码:Java 程序检查数组是否包含给定值。