Функция associateWith

Функция associateWith создает новую карту типа Map, где ключами становятся элементы исходной коллекции, а значения формируются путем применения преобразующей функции valueSelector к каждому элементу. Функция работает с массивами (Array), списками (List), множествами (Set) и другими типами коллекций.

Импорт

kotlinimport kotlin.collections.associateWith

Синтаксис

kotlin// Для Iterable
inline fun <K, V> Iterable<K>.associateWith(
  valueSelector: (K) -> V
): Map<K, V>
kotlin// Для Array
inline fun <K, V> Array<out K>.associateWith(
  valueSelector: (K) -> V
): Map<K, V>

Пример

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

kotlinval numbers = listOf(1, 2, 3, 4, 5)
val squaredMap = numbers.associateWith { it * it }
println(squaredMap)

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

kotlinMap<Int, Int> {1=1, 2=4, 3=9, 4=16, 5=25}

Пример

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

kotlinval chars = arrayOf('a', 'b', 'c', 'd', 'e')
val upperCaseMap = chars.associateWith { it.uppercase() }
println(upperCaseMap)

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

kotlinMap<Char, String> {a=A, b=B, c=C, d=D, e=E}

Пример

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

kotlinval words = setOf("apple", "banana", "cherry")
val lengthMap = words.associateWith { it.length }
println(lengthMap)

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

kotlinMap<String, Int> {apple=5, banana=6, cherry=6}

Пример

Если в исходной коллекции есть дубликаты ключей, в результирующей карте останется только последнее значение:

kotlinval duplicates = listOf(1, 2, 3, 2, 1)
val resultMap = duplicates.associateWith { "value_$it" }
println(resultMap)

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

kotlinMap<Int, String> {1=value_1, 2=value_2, 3=value_3}

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

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