Java 迭代时从自身中移除集合

Java 迭代时从自身中移除集合,java,set,Java,Set,我已经在这上面呆了一段时间了。我试图删除一个集合中的元素,如果它们构成一个集合标准。但是,当我尝试删除元素时,迭代失败 我得到了java.util.ConcurrentModificationException private static void smallerSet(Set<Map<String, Int>> set){ for (Map<String, Integer> map : set){ for (String Str

我已经在这上面呆了一段时间了。我试图删除一个集合中的元素,如果它们构成一个集合标准。但是,当我尝试删除元素时,迭代失败

我得到了java.util.ConcurrentModificationException

private static void smallerSet(Set<Map<String, Int>> set){

    for (Map<String, Integer> map : set){

        for (String String : map.keySet()){

            if ( true){
                set.remove(map);

            }
            else{
                //System.out.println("test");


            }

        }
    }
}
private static void smallerSet(集合){
用于(地图:集){
for(字符串:map.keySet()){
如果(真){
设置。删除(地图);
}
否则{
//系统输出打印(“测试”);
}
}
}
}

如果您有任何建议,我们将不胜感激。

您不能在使用增强的for循环迭代时从
集合中删除元素

您应该使用显式的
迭代器
并使用
迭代器
remove()
方法删除:

Iterator<Map<String, Integer>> iter = set.iterator();
while (iter.hasNext ()) {
    Map<String, Integer> map = iter.next();
    for (String str : map.keySet()){
        if (some condition) {
            iter.remove();
            break; // you should probably break from the inner loop
                   // after removing an element
        } else {
            //System.out.println("test");
        }
    }
}
Iterator iter=set.Iterator();
while(iter.hasNext()){
Map=iter.next();
for(字符串str:map.keySet()){
如果(某些条件){
iter.remove();
break;//您可能应该从内部循环中断
//删除元素后
}否则{
//系统输出打印(“测试”);
}
}
}
以下文件的副本: