Как добавить список на карту в котлине

Мне нужно добавить немного MutableList<String> на карту Map<String, List<String>>, вот как я пытался его инициализировать:

    private var theSteps: MutableList<String> = mutableListOf()
    private var optionsList: Map<String, List<String>> = mapOf()

Затем я добавляю данные в MutableList следующим образом:

        theSteps.add("one")
        theSteps.add("two")
        theSteps.add("three")

все работает нормально, пока я не попробую добавить в Map:

optionsList.add("list_1" to theSteps)

Это просто дает мне ошибку Unresolved reference add и я не могу найти четкую документацию о том, как добавлять к нему элементы.

2 ответа

Решение

optionsList должен быть MutableMap добавить что-нибудь, как будто у вас есть MutableList; или вы можете использовать

theSteps += "list_1" to theSteps

создать новую карту с добавленной парой и обновитьtheStepsпеременная. Это вызывает plusфункция расширения:

Создает новую карту, доступную только для чтения, путем замены или добавления записи в эту карту из заданной пары ключ-значение.

(найдите указанное выше, чтобы найти правильную перегрузку)

Вы не можете добавить на карту, потому что mapOfсоздает карту только для чтения

fun <K, V> mapOf(): Map<K, V>

Возвращает пустую карту только для чтения.

Вероятно, вы захотите создать MutableMap (или аналогичный)

private var optionsList: Map<String, List<String>> = mutableMapOf()

Затем вы можете использовать метод плюс:

optionsList = optionsList.plus("list_1" to theSteps)

Или посмотрите другие варианты как @voddan:

val nameTable = mutableMapOf<String, Person>()    
fun main (args: Array<String>) {
    nameTable["person1"] = example
Другие вопросы по тегам