Функция associateBy

Функция associateBy преобразует коллекцию в отображение Map, где ключи формируются из элементов исходной коллекции с помощью функции keySelector, а значениями становятся сами элементы коллекции. Если встречаются дубликаты ключей, сохраняется только последнее значение.

Импорт

kotlinimport kotlin.collections.associateBy

Синтаксис

kotlin// Для Iterable, Array, List, Set
inline fun <T, K> Iterable<T>.associateBy(
  keySelector: (T) -> K
): Map<K, T>

// Для Map
inline fun <K, V, R> Map<out K, V>.associateBy(
  keySelector: (Entry<K, V>) -> R
): Map<R, Entry<K, V>>

Пример

Создадим отображение из списка строк, где ключом будет первый символ каждой строки:

kotlinval list = listOf("apple", "banana", "cherry", "date")
val res = list.associateBy { it.first() }
println(res)

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

kotlinMap {a=apple, b=banana, c=cherry, d=date}

Пример

Создадим отображение из массива чисел, где ключом будет остаток от деления на 3:

kotlinval array = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
val res = array.associateBy { it % 3 }
println(res)

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

kotlinMap {1=7, 2=8, 0=9}

Пример

Работа с множеством Set. Создадим отображение, где ключ - длина строки:

kotlinval set = setOf("one", "two", "three", "four", "five")
val res = set.associateBy { it.length }
println(res)

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

kotlinMap {3=five, 5=three, 4=four}

Пример

Преобразование Map с использованием associateBy. Создадим новое отображение, где ключом будет значение, умноженное на 2:

kotlinval map = mapOf("a" to 1, "b" to 2, "c" to 3)
val res = map.associateBy { it.value * 2 }
println(res)

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

kotlinMap {2=(a=1), 4=(b=2), 6=(c=3)}

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

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

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

  • функцию associate,
    которая создает отображение с произвольными ключами и значениями
  • функцию associateWith,
    которая использует элементы как ключи, а значения формирует функцией
  • функцию groupBy,
    которая группирует элементы по ключу в списки
  • функцию toMap,
    которая преобразует коллекцию пар в отображение