【发布时间】:2019-07-25 12:35:24
【问题描述】:
我正在尝试根据键值向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")
}
}
我想将新的Agent 模型添加到那个Portal 模型但是当我println(agents.count()) 但值仍然与默认值相同。
【问题讨论】:
-
agents已经是可变列表,为什么还要转换它? -
toMutableList创建一个新列表。其他所有toXXX方法也是如此。