Java 删除的内部元素oh HashSet

Java 删除的内部元素oh HashSet,java,hashset,Java,Hashset,我想通过for(MyClass edg:myHashSet)的哈希集,在for的内部,我想删除哈希集的一个元素 for (MyClass edg : myHashSet) { if(....) myHashSet.remove(); } 但是有一个错误java.util.ConcurrentModificationException如何在分组过程中删除集合的元素?可以使用。迭代器有一个remove方法,用于删除迭代器.next()返回的最后一个元素 for(final

我想通过
for(MyClass edg:myHashSet)
的哈希集,在
for
的内部,我想删除哈希集的一个元素

for (MyClass edg : myHashSet)
{
    if(....)
         myHashSet.remove();
}

但是有一个错误
java.util.ConcurrentModificationException
如何在分组过程中删除集合的元素?

可以使用。迭代器有一个
remove
方法,用于删除迭代器.next()返回的最后一个元素

for(final java.util.Iterator itr=myHashSet.Iterator();itr.hasNext();){
最终MyClass电流=itr.next();
如果(……){
itr.remove();
}
}
阅读javadoc:

这个类的迭代器方法返回的迭代器是快速失败的:如果在迭代器创建后的任何时候,以任何方式(除了通过迭代器自己的remove方法)修改集合,迭代器将抛出ConcurrentModificationException

使用迭代器及其remove()方法

MyClass edg
迭代器hashItr=myHashSet.Iterator();
while(hashItr.hasNext()){
edge=hashItr.next();
如果(…)
hashItr.remove();
}

我有一点想法,自从我使用java已经有一段时间了,但另一种bog标准方法是:

Set<Person> people = new HashSet<Person>(); 
Set<Person> peopleToRemove = new HashSet<Person>(); 

// fill the set of people here.
for (Person currentPerson : people) { 
    removalSet.add(currentPerson); 
} 

people.removeAll(peopleToRemove); 
Set people=newhashset();
Set peopleToRemove=new HashSet();
//把这里的人都填满。
对于(个人当前个人:个人){
删除集。添加(当前人员);
} 
people.removeAll(peopleToRemove);

但是当我删除迭代器的元素时,它会在我的Hashset中自动删除?@user1149157 Yes。调用
Iterator.remove()
将从您的哈希集中删除由
Iterator.next()
返回的最后一项。另一种方法是使用Iterator.remove(),它避免了正常的ConcurrentModificationException,上面可以看到一个例子:)Mehdi,如果有人回答了您的问题,最好接受他们的答案,否则你会发现人们开始不回答你的问题。
MyClass edg
Iterator<MyClass> hashItr = myHashSet.iterator();
while ( hashItr.hasNext() ) {
    edge = hashItr.next();
    if ( . . . )
        hashItr.remove();
}
Set<Person> people = new HashSet<Person>(); 
Set<Person> peopleToRemove = new HashSet<Person>(); 

// fill the set of people here.
for (Person currentPerson : people) { 
    removalSet.add(currentPerson); 
} 

people.removeAll(peopleToRemove);