Функция 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
,
которая преобразует коллекцию пар в карту