我正在尝试从列表中删除一个元素。但是,我设置的索引是这样的:
answerIds.indexOf(finishedTasksGroups[i])
一般结构是:
for (i in 1 until finishedTasksGroups.size) {
answersTxts.removeAt(answerIds.indexOf(finishedTasksGroups[i]))
}
但结果,它没有按应有的方式被删除。在finishedTasksGroups
我有 3 个元素中,在answersTxts
5中。finishedTasksGroups
它看起来像这样:[1,2,3]
最后answersTxts
,应该显示 4 和 5 个元素,但显示了 1,3 和 5。我不明白我做错了什么,一切似乎写得正确,但是因为在某个地方一定有错误。
这是因为正在处理的列表在此工作期间发生了变化,并且在每次迭代之后列表已经完全不同。
我们走吧:
我 = 1:
finishedTasksGroups[1]
= 2。answerIds.indexOf(2)
= 1。answersTxts.removeAt(1)
删除元素 2。即 空元素 (1) 仍然存在。结果:[1, 3, 4, 5]
我 = 2:
finishedTasksGroups[2]
= 3。answerIds.indexOf(3)
= 2。answersTxts.removeAt(2)
删除 4,因为在上一次删除之后,元素 4 移动到了位置 2。结果:[1, 3, 5]
循环完成。
解决方法:从另一端走。