原文: https://www.programiz.com/kotlin-programming/examples/array-contains-value

在此程序中,您将学习如何在 Kotlin 中检查数组是否包含给定值。

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

  1. fun main(args: Array<String>) {
  2. val num = intArrayOf(1, 2, 3, 4, 5)
  3. val toFind = 3
  4. var found = false
  5. for (n in num) {
  6. if (n == toFind) {
  7. found = true
  8. break
  9. }
  10. }
  11. if (found)
  12. println("$toFind is found.")
  13. else
  14. println("$toFind is not found.")
  15. }

运行该程序时,输出为:

  1. 3 is found.

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

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

如果是,我们将found设置为true,然后退出循环。 如果不是,我们转到下一个迭代。


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

  1. import java.util.stream.IntStream
  2. fun main(args: Array<String>) {
  3. val num = intArrayOf(1, 2, 3, 4, 5)
  4. val toFind = 7
  5. val found = IntStream.of(*num).anyMatch { n -> n == toFind }
  6. if (found)
  7. println("$toFind is found.")
  8. else
  9. println("$toFind is not found.")
  10. }

运行该程序时,输出为:

  1. 7 is not found.

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

anyMatch()方法采用返回布尔值的谓词,表达式或函数。 在我们的情况下,谓词将流中的每个元素ntoFind进行比较,然后返回truefalse

如果元素n中的任何一个返回true,则将found设置为true


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

  1. import java.util.Arrays
  2. fun main(args: Array<String>) {
  3. val strings = arrayOf("One", "Two", "Three", "Four", "Five")
  4. val toFind = "Four"
  5. val found = Arrays.stream(strings).anyMatch { t -> t == toFind }
  6. if (found)
  7. println("$toFind is found.")
  8. else
  9. println("$toFind is not found.")
  10. }

运行该程序时,输出为:

  1. Four is found.

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

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