НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
401 of 1310 menu

Функция filterIndexed

Функция filterIndexed выполняет фильтрацию элементов коллекции, используя предикат, который принимает два параметра: индекс элемента и сам элемент. Возвращает новую коллекцию, содержащую только те элементы, для которых предикат вернул true.

Импорт

import kotlin.collections.filterIndexed

Синтаксис

// Для Array inline fun <T> Array<out T>.filterIndexed( predicate: (index: Int, T) -> Boolean ): List<T>
// Для List inline fun <T> Iterable<T>.filterIndexed( predicate: (index: Int, T) -> Boolean ): List<T>
// Для Set inline fun <T> Iterable<T>.filterIndexed( predicate: (index: Int, T) -> Boolean ): List<T>
// Для Map inline fun <K, V> Map<out K, V>.filterIndexed( predicate: (index: Int, Entry<K, V>) -> Boolean ): Map<K, V>

Пример

Отфильтруем элементы массива, оставив только те, индекс которых делится на 2 без остатка:

val arr = arrayOf('a', 'b', 'c', 'd', 'e') val res = arr.filterIndexed { index, element -> index % 2 == 0 } println(res)

Результат выполнения кода:

List<Char> ['a', 'c', 'e']

Пример

Отфильтруем элементы списка, оставив только те, индекс которых больше 1 и значение больше 3:

val list = listOf(1, 2, 3, 4, 5) val res = list.filterIndexed { index, value -> index > 1 && value > 3 } println(res)

Результат выполнения кода:

List<Int> [4, 5]

Пример

Отфильтруем элементы множества, оставив только те, индекс которых не равен 0:

val set = setOf("apple", "banana", "cherry") val res = set.filterIndexed { index, item -> index != 0 } println(res)

Результат выполнения кода:

List<String> ["banana", "cherry"]

Пример

Отфильтруем элементы Map, оставив только те записи, индекс которых четный и значение содержит букву 'a':

val map = mapOf(1 to "apple", 2 to "banana", 3 to "cherry") val res = map.filterIndexed { index, entry -> index % 2 == 0 && entry.value.contains('a') } println(res)

Результат выполнения кода:

Map<Int, String> {1=apple, 2=banana}

Для каких типов коллекций работает

Функция filterIndexed доступна для следующих типов коллекций:

  • Array - массивы
  • List - списки
  • Set - множества
  • Map - ассоциативные массивы
  • Iterable - любые итерируемые коллекции
  • Sequence - последовательности

Смотрите также

  • функцию filter,
    которая фильтрует элементы без учета индекса
  • функцию filterNot,
    которая возвращает элементы, не удовлетворяющие условию
  • функцию mapIndexed,
    которая преобразует элементы с учетом их индекса
  • функцию forEachIndexed,
    которая выполняет действие для каждого элемента с учетом индекса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить