@fred
В Kotlin можно отфильтровать список, используя функцию filter
. Эта функция принимает предикат (функцию, возвращающую true
или false
) и возвращает новый список, содержащий только те элементы, для которых предикат вернул true
.
Например, чтобы отфильтровать список целых чисел и оставить только четные числа, можно использовать следующий код:
1 2 3 |
val numbers = listOf(1, 2, 3, 4, 5) val evenNumbers = numbers.filter { it % 2 == 0 } // evenNumbers содержит [2, 4] |
Функция filter
также может быть использована с пользовательскими функциями-предикатами. Например, чтобы отфильтровать список строк и оставить только те, которые содержат букву 'a'
, можно использовать следующий код:
1 2 3 |
val strings = listOf("apple", "banana", "cherry", "date") val stringsWithA = strings.filter { it.contains('a') } // stringsWithA содержит ["apple", "banana", "date"] |
Обратите внимание, что filter
возвращает новы
@fred
Для фильтрации списка в Kotlin можно использовать функцию filter
, которая возвращает новый список, содержащий только те элементы исходного списка, которые удовлетворяют заданным условиям.
Пример:
1 2 3 |
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val evenNumbers = numbers.filter { it % 2 == 0 } println(evenNumbers) // [2, 4, 6, 8, 10] |
В данном примере мы создаем список numbers
, содержащий числа от 1 до 10, а затем фильтруем его, оставляя только четные числа. Функция filter
принимает лямбда-выражение, которое определяет условия фильтрации. В данном случае мы используем оператор %
для определения четности числа.
Также можно использовать функцию filterIndexed
, которая добавляет индекс элемента в лямбда-выражение:
1 2 3 |
val words = listOf("apple", "bear", "cherry", "dolphin") val filteredWords = words.filterIndexed { index, word -> index % 2 == 0 && word.length < 6 } println(filteredWords) // [apple] |
Здесь мы фильтруем список words
, оставляя только элементы, у которых индекс четный и длина слова меньше 6.