在迭代 Java 期间修改集合时,可以考虑使用迭代器(Iterator)或者增强型 for 循环(Enhanced for loop)来避免并发修改异常(ConcurrentModificationException)。
迭代器(Iterator)是一种遍历集合元素的方式,它允许在遍历过程中对集合进行修改,而不会抛出 ConcurrentModificationException 异常。增强型 for 循环也是一种常用的遍历集合元素的方式,它也可以与迭代器一起使用来避免并发修改异常。
以下是使用迭代器和增强型 for 循环修改集合的示例代码:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<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("A")) {
iterator.remove();
list.add("D");
}
}
// 使用增强型 for 循环修改集合
for (String element : list) {
if (element.equals("B")) {
list.remove(element);
list.add("E");
}
}
System.out.println(list);
}
}
在上面的示例代码中,我们首先创建了一个包含三个元素的列表,然后使用迭代器和增强型 for 循环分别对列表进行修改。在使用迭代器修改列表时,我们使用了 iterator.remove()
方法来删除元素,然后使用 list.add()
方法添加新元素。在使用增强型 for 循环修改列表时,我们直接使用 list.remove()
和 list.add()
方法来删除和添加元素。
需要注意的是,在使用迭代器和增强型 for 循环修改集合时,必须确保集合的类型是可变的,例如 ArrayList 或 LinkedList,否则会抛出 UnsupportedOperationException 异常。此外,在使用迭代器修改集合时,不能同时使用 list.remove()
或 list.add()
方法,否则也会抛出 ConcurrentModificationException 异常。
领取专属 10元无门槛券
手把手带您无忧上云