arraylist for循环中删除
时间: 2024-05-02 15:02:09 浏览: 58
在ArrayList的for循环中删除元素是一个比较棘手的问题。这是因为删除元素会改变ArrayList的大小,从而导致索引发生变化。如果不注意处理,就会出现数组越界等问题。
一种比较安全的做法是使用迭代器进行删除操作。例子如下:
```
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("B")) {
iterator.remove();
}
}
```
这里使用了迭代器的remove方法删除元素。注意,删除操作必须通过迭代器进行,而不能直接使用ArrayList的remove方法,否则会抛出ConcurrentModificationException异常。
如果一定要使用for循环删除元素,就需要注意索引的变化。具体实现如下:
```
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (int i = 0; i < list.size(); i++) {
String element = list.get(i);
if (element.equals("B")) {
list.remove(i);
i--; // 索引减一,避免漏掉下一个元素
}
}
```
这里需要注意,删除元素后,需要将索引减一,否则会漏掉下一个元素。同时,由于删除操作是在for循环中进行的,所以需要使用size方法获取ArrayList的大小,而不是在循环外部缓存大小。
阅读全文