ArrayList什么情况下不可以使用增强for循环
时间: 2024-03-17 15:41:08 浏览: 21
在大多数情况下,ArrayList可以使用增强for循环进行遍历。但是,当需要在遍历过程中进行删除或添加操作时,使用增强for循环可能会抛出ConcurrentModificationException异常。
例如,下面的代码演示了在使用增强for循环遍历ArrayList时进行删除操作,导致抛出ConcurrentModificationException异常:
```
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
for (String fruit : list) {
if (fruit.equals("banana")) {
list.remove(fruit); // 会抛出ConcurrentModificationException异常
}
}
```
这是因为,在使用增强for循环遍历ArrayList时,会使用迭代器Iterator来实现,而在进行删除或添加操作时,会改变集合的结构,导致迭代器失效,从而抛出ConcurrentModificationException异常。
因此,在需要在遍历过程中进行添加或删除操作时,建议使用普通for循环或迭代器Iterator来遍历ArrayList。
相关问题
增强for循环遍历arraylist
当使用增强for循环遍历ArrayList时,可以按照以下方式进行操作:
```java
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("元素1");
arrayList.add("元素2");
arrayList.add("元素3");
for (String element : arrayList) {
// 对每个元素执行操作
System.out.println(element);
}
```
在上述示例中,我们创建了一个ArrayList,并向其添加了三个元素。然后,使用增强for循环遍历ArrayList中的每个元素,并对每个元素执行操作。在这里,我们只是简单地将元素打印到控制台上。
请注意,我们需要指定ArrayList的泛型类型,以便在增强for循环中正确地使用元素。在上述示例中,我们使用了`String`类型的ArrayList作为示例。
不使用增强for循环循环list
可以使用普通的for循环来遍历list。示例如下:
```
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
```
在这个示例中,我们使用了普通的for循环来遍历list,因为普通的for循环可以通过下标来访问list中的元素。循环变量i从0开始,每次循环增加1,直到i等于list的长度为止。在循环体中,我们使用`list.get(i)`方法来获取当前下标对应的元素,并将其打印出来。