【发布时间】:2012-03-23 02:38:03
【问题描述】:
在我的 Android 应用 Java 代码中,我有一个自定义数据类型的 ArrayList。根据我对ArrayLists 的了解,当您执行ArrayList.remove(location) 时,位于位置上方的所有项目都会向下移动一个。但是由于某种原因,当我从数组的末端向后迭代以删除数组中的选定项目时,每次删除项目时,它下面的所有项目都会向上移动一个,而不是较高项目的正常行为下移一位。因此,当我删除数组中间的第一项时,0 处的项变为 1 并且 0 变为空。有没有什么特别我可以做的事情或某种情况会导致这种情况发生?
对于我不清楚自己在做什么,我深表歉意。我没有遍历 ArrayList。但相反,我有另一个列表,其中包含我需要删除的原始列表中的所有项目。我在第二个列表上执行 Collections.sort 并在第二个列表上从头开始迭代,并且在每次迭代中我执行 ArrayList.remove 一个第一个列表,位置从第二个列表中读取。因此,移除从最高位置到最低位置,我认为这将防止每次移除时发生较低项目的任何变化。但我看到发生的是低于被移除项目的项目都被向上移动以填补空白。为什么会这样?
【问题讨论】:
-
这种情况不是Android特有的,一般Java都适用。
-
请出示代码。它比描述你在做什么更清楚。更重要的是,您的代码可能不会做它应该做的事情。
-
@FabianBarney:这是您投票结束问题时自动生成的评论。老实说,这不是我写的!
-
@LukeWoodward:但您可以编辑或删除评论。
-
@LukeWoodward 不知道。把手放下。 :)