使用For循环从ArrayList中删除数据

我有一个奇怪的问题。我以为这会花我几分钟,但现在我已经挣扎了几个小时……这就是我得到的:

for (int i = 0; i < size; i++){

if (data.get(i).getCaption().contains("_Hardi")){

data.remove(i);

}

}

dataArrayList. 在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

回到顶部