我想从集合中删除长度为5的字符串,但它会继续输出集合本身。

public void remove5()
{
Set<String> newSet = new HashSet<String>();
newSet.add("hello");
newSet.add("my");
newSet.add("name");
newSet.add("is");
newSet.add("nonsense");
for(String word: newSet)
{
    if(word.length()==5)
    {
        newSet.remove(word); // Doesn't Help - throws an error Exception in thread "main" java.util.ConcurrentModificationException
    }
}
    System.out.println(newSet);
}


我希望输出为:

my
name
is
nonsense


(您好,因为它是5个字符而被删除)

但是我每次都会得到这个:

hello
my
name
is
nonsense


你能帮忙吗?

最佳答案

Iterator<String> it= newStr.iterator();
while(it.hasNext()) { // iterate
   String word = it.next();
   if(word.length() == 5) { // predicate
      it.remove();  // remove from set through iterator - action
   }
}

关于java - 如何从集合中删除长度为5的字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8336663/

10-11 13:18