我正在尝试从列表中删除一个元素。但是,我设置的索引是这样的:
answerIds.indexOf(finishedTasksGroups[i])
一般结构是:
for (i in 1 until finishedTasksGroups.size) {
answersTxts.removeAt(answerIds.indexOf(finishedTasksGroups[i]))
}
但结果,它没有按应有的方式被删除。在finishedTasksGroups我有 3 个元素中,在answersTxts5中。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]循环完成。
解决方法:从另一端走。