Например, у меня есть список строк, таких как:
val list = listOf("a", "b", "c", "d")
и я хочу преобразовать его в карту, где строки являются ключами.
Я знаю, что должен использовать эту .toMap()
функцию, но я не знаю как, и я не видел ни одного примера.
dictionary
kotlin
LordScone
источник
источник
Pair
экземпляров может быть очень дорогостоящим для больших коллекцийС
List
поMap
сassociate
функциейС Kotlin 1.3,
List
есть функция под названиемassociate
.associate
имеет следующую декларацию:Использование:
С
List
поMap
сassociateBy
функциейС Kotlin,
List
есть функция под названиемassociateBy
.associateBy
имеет следующую декларацию:Использование:
источник
* Ссылка: Kotlin Документация
1- связать (чтобы установить ключи и значения): построить карту, которая может установить элементы ключа и значения:
2- associateBy (просто установите ключи по расчету): создайте карту, в которой мы можем установить новые ключи, аналогичные элементы будут установлены для значений
3- associateWith (просто установите значения по расчету): создайте карту, в которой мы можем установить новые значения, аналогичные элементы будут установлены для ключей
Пример из советов Котлина:
источник
Вы можете использовать
associate
для этой задачи:В этом примере строки from
list
становятся ключами, а их соответствующие длины (в качестве примера) становятся значениями внутри карты.источник
Если в вашем списке есть дубликаты, которые вы не хотите терять, вы можете сделать это, используя
groupBy
.В противном случае, как и все остальные, используйте use
associate/By/With
(который, как я полагаю, в случае дубликатов вернет только последнее значение с этим ключом).Пример группировки списка людей по возрасту:
Полученные результаты:
источник
Это изменилось в версии RC.
Я использую
val map = list.groupByTo(destinationMap, {it.facebookId}, { it -> it.point })
источник