使用For循环从ArrayList中删除数据
我有一个奇怪的问题。我以为这会花我几分钟,但现在我已经挣扎了几个小时……这就是我得到的:
for (int i = 0; i < size; i++){ if (data.get(i).getCaption().contains("_Hardi")){
data.remove(i);
}
}
该data
是ArrayList.
在ArrayList中我得到了一些字符串(共14个左右),和他们的9,它得名_Hardi。
并使用上面的代码,我想删除它们。如果我replace
data.remove(i);使用a,System.out.println
那么它将打印出9次,这是好的,因为_Hardi在ArrayList中是9次。
但是,当我使用data.remove(i);
它时,它不会删除所有9个,而只会删除几个。我做了一些测试,我也看到了:
当我将字符串重命名为:Hardi1 Hardi2 Hardi3 Hardi4 Hardi5 Hardi6
然后,它仅删除偶数(1、3、5等)。他一直在跳过1,但不知道为什么。
如何解决这个问题?或者也许是另一种删除它们的方法?
回答:
问题是您 迭代
。删除项目将减小列表的大小,当您尝试访问大于有效大小(被删除项目后的大小)的索引时,该列表将失败。
如果不想处理索引,请 删除。
for (Iterator<Object> it = data.iterator(); it.hasNext();) {if (it.next().getCaption().contains("_Hardi")) {
it.remove();
}
}
否则,
for (int i = size-1; i >= 0; i--){ if (data.get(i).getCaption().contains("_Hardi")){
data.remove(i);
}
}
以上是 使用For循环从ArrayList中删除数据 的全部内容, 来源链接: utcz.com/qa/418982.html