Как отфильтровать список в kotlin?

Пользователь

от fred , в категории: Другие , 3 года назад

Как отфильтровать список в kotlin?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rebekah , 2 года назад

@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 возвращает новы

Пользователь

от kameron , год назад

@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.