ConcurrentModificationException错误

ConcurrentModificationException错误,exception,Exception,有人能帮我解决代码问题吗?错误是: Exception in thread "main" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894) at java.util.HashMap$KeyIterator.next(HashMap.java:928) at javaTest.Main.main(Main.java:1

有人能帮我解决代码问题吗?错误是:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894)
    at java.util.HashMap$KeyIterator.next(HashMap.java:928)
    at javaTest.Main.main(Main.java:18)
代码是:

public static void main(String arg[]) {
    job.add("a");
    job.add("b");
    HashSet<String> klonasOnJob = job;
    for (String p : klonasOnJob) {
        if (p != "b") {

        } else {
            job.remove(p);
        }
}
publicstaticvoidmain(字符串arg[]){
工作。添加(“a”);
工作。添加(“b”);
HashSet klonasOnJob=job;
for(字符串p:klonasOnJob){
如果(p!=“b”){
}否则{
删除(p);
}
}

如果在迭代集合时修改集合(在您的情况下,通过删除元素),大多数集合将中断并抛出
ConcurrentModificationException
。请改用迭代器的
remove()
方法

在您的情况下,相关片段将是:

Iterator<String> it = klonasOnJob.iterator();
while (it.hasNext()) {
    String p = it.next();
    if (p != "b") {

    } else {
        it.remove();
    }
}
Iterator it=klonasOnJob.Iterator();
while(it.hasNext()){
字符串p=it.next();
如果(p!=“b”){
}否则{
it.remove();
}
}

但我在迭代时并没有修改集合,我创建了另一个HashMap并将其内容复制到另一个HashSet klonasOnJob=job;job.remove(p)你只设置了引用<代码> KLoason JooWors/Cuth>指向与“代码>作业 >相同的对象——这就是java中的赋值:它只是复制引用,而不是像C++那样创建对象的副本。因此,基本上通过删除这个行作业。;我从job和klonasOnJob中删除,对吗?是的,只是两个名字都指向同一个对象。