在Spring Boot中HashSet出现ConcurrentModificationException错误

时间:2018-10-19 18:30:36

标签: java spring-boot hashset

我在春季遇到了HashSet的问题。

每次我尝试使用removerTodosEnvolvidos()两次以上时,都会收到ConcurrentModificationException。 实际上,我不知道为什么会收到此错误,但是当我使用调试器时,每次看到错误时,for循环都会获取HashSet中的第一个元素,但此后他得到了异常。

我具有此属性和方法:

    @ManyToMany
    @JoinTable(name = "ETAPA_ENVOLVIDOS", joinColumns = @JoinColumn(name = "etapa_id"), inverseJoinColumns = @JoinColumn(name = "conta_id"))
    private Set<Conta> envolvidos = new HashSet<>();

    public void removerEnvolvido(Conta conta) {
        this.envolvidos.remove(conta);
    }

    public void removerTodosEnvolvidos() {
        if(!this.envolvidos.isEmpty()) {
            for (Conta aux : this.envolvidos) {
                removerEnvolvido(aux);
            }
        }
    }

我搜索了此错误,并发现使用Iterator以及方法hasNext()和next(),但这对我不起作用。我必须更改的代码是这样的:

public void removerEnvolvido(Conta conta) {
    Iterator<Conta> iter = this.envolvidos.iterator();
    while(iter.hasNext()){
        Conta aux = iter.next();
        if(aux.equals(conta)) {
            iter.remove();
        }
    }
    //this.envolvidos.remove(conta);
}

连续错误:

java.util.ConcurrentModificationException: null
    at java.util.HashMap$HashIterator.nextNode(Unknown Source) ~[na:1.8.0_181]
    at java.util.HashMap$KeyIterator.next(Unknown Source) ~[na:1.8.0_181]
    at org.hibernate.collection.internal.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:835) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]

0 个答案:

没有答案
相关问题