В этой программе вы научитесь проверять, содержит ли массив заданное значение в Kotlin.
Пример 1. Проверьте, содержит ли Int Array заданное значение
fun main(args: Array) ( 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 найдено.
В приведенной выше программе у нас есть массив целых чисел, хранящийся в переменной num. Точно так же число, которое нужно найти, сохраняется в toFind.
Теперь мы используем for-in
цикл для перебора всех элементов num и индивидуальной проверки, равно ли toFind n или нет.
Если да, мы устанавливаем найденное true
в цикл и выходим из него. Если нет, то переходим к следующей итерации.
Пример 2: проверьте, содержит ли массив заданное значение, используя Stream
import java.util.stream.IntStream fun main(args: Array) ( 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 не найден.
В приведенной выше программе вместо использования цикла foreach мы преобразовываем массив в объект IntStream
и используем его anyMatch()
метод.
anyMatch()
Метод принимает предикат, выражение или функцию, которая возвращает логическое значение. В нашем случае предикат сравнивает каждый элемент n в потоке с toFind и возвращает true
или false
.
Если какой-либо из элементов n возвращается true
, найденный также устанавливается в true
.
Пример 3: Проверить, содержит ли массив заданное значение для непримитивных типов
import java.util.Arrays fun main(args: Array) ( 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.") )
Когда вы запустите программу, вывод будет:
Найдено четыре.
В приведенной выше программе, мы использовали тип данных , не примитивный String
и используется Arrays
«s stream()
метод сначала преобразовать его в поток и anyMatch()
проверить , если массив содержит заданное значение toFind.
Вот эквивалентный код Java: Программа на Java для проверки, содержит ли массив заданное значение.