我试图从ArrayList中删除一些元素,同时像这样迭代:

for (String str : myArrayList) {
    if (someCondition) {
        myArrayList.remove(str);
    }
}

当然,当我try 从列表中删除项目的同时迭代myArrayList时,我得到了ConcurrentModificationException分.有什么简单的解决办法吗?

推荐答案

使用Iterator并拨打remove():

Iterator<String> iter = myArrayList.iterator();

while (iter.hasNext()) {
    String str = iter.next();

    if (someCondition)
        iter.remove();
}

Java相关问答推荐

JLS中形式参数列表后面的任何括号对用于确定方法结果中的精确数组类型的具体含义是什么?

使用hibiter中特定字段的where条款自定义映射

Proguard配置以保留具有参数的注释的成员

如何在PFA中使用不确定的进度指标制作可暂停的任务?

如何让HikariCP指标在NewRelic中正确显示?

将状态栏和导航栏设置为白色,带有深色文本

具有默认分支的JUnit代码覆盖率切换声明

Mat. n_Delete()和Mat. n_release的区别

为什么一个java函数会返回一个作为参数传递给它的对象?

Hibernate 6支持Joda DateTime吗?

RESTful框架类字段是安全的还是不安全的

如何获得执行人?

Spring Boot Maven包

SpringBoot+Java 17@Valid未验证POJO

使用UTC时区将startDatetime转换为本地时间

Spring安全令牌刷新和JWT签名与本地计算的签名不匹配

如何创建模块信息类文件并将其添加到JAR中?

JavaFX,GridPane:在GridPane的列中生成元素将保持所有列的宽度

在WHILE()循环初始化部分中声明和初始化变量的Java语法?

如何通过用户ID向用户发送私信