Добавить новый элемент в HashMap, но не найден при запросе - Kotlin - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь добавить новый элемент списка в HashMap на основе значения ключа, а его значение является вложенным списком.

Вот класс, который я инициализировал:

private val portalDummyData = listOf(
Portal(
  id = "p1", address = "Moringa", clientID = "c1", clientSecret = "cs1", agents = mutableListOf(
    Agent(
      "agent1", "agent", email, listOf(
        "p1"
      )
    ),
    Agent(
      "agent2", "agent2", email, listOf(
        "p1", "p2"
      )
    )
  )
 )
)
private val portalHashMap = HashMap<String, Portal>()

init {
  portalDummyData.forEach { portalHashMap[it.id] = it }
}

Как выможет видеть каждое значение portalHashMap, которое я храню в виде списка, и в этом списке содержится другой список.Итак, я хочу добавить новый элемент списка в список, который остается внутри его родительского списка.Но когда я добавил новый элемент, и этот элемент не найден.

Вот код, который я пытался добавить в новый элемент списка:

override suspend fun addAgentToPortal(agent: Agent, id: String) {
val portal = portalHashMap[id]
if (portal != null) {
  val agents = portal.agents
  agents.toMutableList().add(agent)
  print(agents.count())
} else {
  throw NotFoundException("Portal not found")
}
}

Я хочу добавить к этому новую модель AgentPortal модель, но когда я println(agents.count()), но значение по-прежнему остается таким же, как по умолчанию.

1 Ответ

0 голосов
/ 04 марта 2019

Использовать изменяемый список вместо списка.Вы не можете добавить новый элемент в список

Portal(
        id = "p1", address = "Moringa", clientID = "c1", clientSecret = "cs1", 
        agents = mutableListOf(
            Agent( "agent1", "agent", email, listOf("p1")),
            Agent("agent2", "agent2", email, listOf("p1", "p2"))
        )
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...