java不允许在同一个迭代中修改两个列表元素吗?

java不允许在同一个迭代中修改两个列表元素吗?,java,collections,iteration,concurrentmodification,Java,Collections,Iteration,Concurrentmodification,我很难理解这个错误。 错误消息: 线程“main”java.util.ConcurrentModificationException中出现异常 public static int lift(List<String> list) { int index = 0; for (String element : list) { list.remove(index); list.add(index, element

我很难理解这个错误。 错误消息: 线程“main”java.util.ConcurrentModificationException中出现异常

public static int lift(List<String> list) {
        int index = 0;
        for (String element : list) {
            list.remove(index);
            list.add(index, element.toUpperCase());
            index++;
        }
public static int lift(列表){
int指数=0;
for(字符串元素:列表){
列表。删除(索引);
add(index,element.toUpperCase());
索引++;
}
我试图替换列表项,但我猜在同一迭代中删除和添加被认为是一种并发修改?对吗?我尝试了element=element.toUppercase(),但实际上根本没有修改列表


请帮助!我是一个初学者(显然)

最简单的方法是
list.replaceAll(String::toUpperCase)与当前代码最接近的方法是删除
列表。删除
行,然后使用
列表。设置
而不是
列表。添加
。这将在没有ConcurrentModificationException的情况下工作;但对所有列表类型来说都不是有效的(例如,LinkedList将是低效的)一种通常有效的循环方式是:
for(ListIterator it=list.ListIterator();it.hasNext();){it.set(it.next().toUpperCase());}