今天在写LeetCode代码时遇到的问题
错误代码如下:
Set<Iterator> set=new HashSet();
for(Integer ele:set){
if(ele.equals(1))
set.remove(ele++);
}
下面同样会报错
Set<Iterator> set=new HashSet();
Iterator it=set.iterator();
while(it.hasNext()){
int ele=(int)it.next();//一定要加int
if(ele.equals(1))
set.remove();
}
上面的代码会报错,ConcurrenModificationException异常,原因是,集合不可以一边遍历一边删除。ConcurrentModificationException是Java集合的一个快速失败(fail-fast)机制,防止多个线程同时修改同一个集合的元素正确的写法如下:
Set<Iterator> set=new HashSet();
Iterator<Integer> it=set.iterator();
while(it.hasNext()){
int ele=(int)it.next();
if(ele.equals(1))
it.remove();
}
}