Groovy中的java.util.ConcurrentModificationException

时间:2016-01-29 03:22:58

标签: java groovy

我有这段代码:

       void remove(){
            boolean allowRemove = false;
            violations.each{
                if(it.selected) allowRemove = true;
            }
            if(!allowRemove) throw new Exception("No item selected!");
            if(allowRemove){
                def templist = violations;
                templist.each{ if(it.selected) templist.remove(it) }
                violations = templist;
                tableHandler.reload();
            }
        }

每次执行此代码时,我的应用程序都会抛出错误: java.util.ConcurrentModificationException 。我找到了如何使用 Iterator Java 中解决此问题的答案。但我不知道如何在 Groovy 中对其进行编码。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

使用templist.removeAll{it.selected}

编辑:这适用于Groovy 1.7.4:

class Test {

static void main(String[] args) {
    def c = [1, 2, 3, 4, 5]
    c.removeAll { it % 2 == 0 }
    println c
}

}

答案 1 :(得分:2)

不就是这样做

violations = violations.findAll { !it.selected }