АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
415 of 1310 menu
Вступайте в телеграмм-канал сайта code.mu: новинки, статьи, интервью, задачи, бесплатные курсы и тренинги. Жми для вступления:)

Функция associateWith

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

Импорт

import kotlin.collections.associateWith

Синтаксис

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

Пример

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

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

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

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

Пример

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

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

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

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

Пример

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

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

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

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

Пример

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

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

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

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

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

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