Функция associate
Функция associate преобразует элементы коллекции
в пары ключ-значение и создает из них ассоциативный массив
типа Map. Функция принимает лямбда-функцию, которая
для каждого элемента исходной коллекции возвращает пару
Pair<K, V>, где K - тип ключа,
V - тип значения.
Импорт
import kotlin.collections.associate
Синтаксис
inline fun <T, K, V> Iterable<T>.associate(
transform: (T) -> Pair<K, V>
): Map<K, V>
inline fun <T, K, V> Array<T>.associate(
transform: (T) -> Pair<K, V>
): Map<K, V>
Поддерживаемые типы коллекций
Функция associate доступна для следующих типов коллекций:
Array- массивыList- спискиSet- множестваIterable- любые итерируемые коллекцииSequence- последовательности
Пример
Создадим Map из списка чисел, где ключом будет число, а значением - его квадрат:
val numbers = listOf(1, 2, 3, 4, 5)
val squaredMap = numbers.associate { it to it * it }
println(squaredMap)
Результат выполнения кода:
Map {1=1, 2=4, 3=9, 4=16, 5=25}
Пример
Создадим Map из массива символов, где ключом будет символ, а значением - его позиция в алфавите:
val chars = arrayOf('a', 'b', 'c', 'd', 'e')
val positionMap = chars.associate {
char -> char to (char - 'a' + 1)
}
println(positionMap)
Результат выполнения кода:
Map {a=1, b=2, c=3, d=4, e=5}
Пример
Создадим Map из множества строк, где ключом будет первый символ строки, а значением - сама строка:
val words = setOf("apple", "banana", "cherry", "date")
val firstCharMap = words.associate {
word -> word.first() to word
}
println(firstCharMap)
Результат выполнения кода:
Map {a=apple, b=banana, c=cherry, d=date}
Важное замечание
Если в результате преобразования получаются дубликаты ключей, то будет сохранено только последнее значение для каждого ключа:
val items = listOf("apple", "avocado", "banana", "berry")
val resultMap = items.associate {
item -> item.first() to item
}
println(resultMap)
Результат выполнения кода:
Map {a=avocado, b=banana, e=berry}
Смотрите также
-
функцию
associateBy,
которая создает Map с ключами из элементов коллекции -
функцию
associateWith,
которая создает Map со значениями из элементов коллекции -
функцию
toMap,
которая преобразует коллекцию пар в Map -
функцию
groupBy,
которая группирует элементы по ключу