我想从集合中删除长度为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/