Функция associate

Функция associate преобразует элементы коллекции в пары ключ-значение и создает из них ассоциативный массив типа Map. Функция принимает лямбда-функцию, которая для каждого элемента исходной коллекции возвращает пару Pair<K, V>, где K - тип ключа, V - тип значения.

Импорт

kotlinimport kotlin.collections.associate

Синтаксис

kotlininline fun <T, K, V> Iterable<T>.associate(
  transform: (T) -> Pair<K, V>
): Map<K, V>
kotlininline fun <T, K, V> Array<T>.associate(
  transform: (T) -> Pair<K, V>
): Map<K, V>

Поддерживаемые типы коллекций

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

Пример

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

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

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

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

Пример

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

kotlinval chars = arrayOf('a', 'b', 'c', 'd', 'e')
val positionMap = chars.associate { 
  char -> char to (char - 'a' + 1) 
}
println(positionMap)

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

kotlinMap {a=1, b=2, c=3, d=4, e=5}

Пример

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

kotlinval words = setOf("apple", "banana", "cherry", "date")
val firstCharMap = words.associate { 
  word -> word.first() to word 
}
println(firstCharMap)

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

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

Важное замечание

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

kotlinval items = listOf("apple", "avocado", "banana", "berry")
val resultMap = items.associate { 
  item -> item.first() to item 
}
println(resultMap)

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

kotlinMap {a=avocado, b=banana, e=berry}

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

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