【发布时间】:2012-05-29 15:56:36
【问题描述】:
我有一个 ArrayList 假设 list,它有 8 个项目 AH,现在我想从 list 中删除存储在 int 数组中的 1,3,5 位置项目我该怎么做。
我正在尝试使用
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
list.add("H");
int i[] = {1,3,5};
for (int j = 0; j < i.length; j++) {
list.remove(i[j]);
}
但是在数组的第一个项目被删除后被改变并且在下一次迭代中它删除了错误的元素或给出了异常。
【问题讨论】:
-
按索引的降序删除如何(对索引进行排序,然后先删除索引最高的元素)?
-
你的逻辑有缺陷。当然,您不应该考虑每个项目的位置,而应该考虑项目本身。换句话说,您不想删除位置 1、3 和 5,而是想使用
equals("B")、equals("D")和equals("F")删除项目(无论它们在List中的什么位置)。想想吧。 -
是的,我想删除项目,但如何匹配项目。实际上,这些项目在 ListView 中,在选择时我想从 DB 和 Array 中删除它并刷新适配器和 List
-
慢速选项:将元素添加到第二个列表后迭代,从第一个列表中删除第二个列表(可选步骤:将第二个列表返回给调用者)