总结:Iterator中.next()方法只能调用一次,每一次使用都会指向下一个元素,当下一个元素不存在是(边界溢出)即报该错误.
创建set的iterator
Set<Object> set = new HashSet<Object>();
Iterator<Object> it = set.iterator();
while(it.hasNext())//判断是否有下一个然后才能取值,跑程序打印出来检查很耗费时间的
it.next()取出元素
使用Iterator迭代器出现错误java.util.NoSuchElementException
错误写法:
Iterator<Map<String, Object>> it = list.iterator();
while(it.hasNext()){
if(it.next().get("listSrc") != null && "C".equals(it.next().get("listSrc").toString())){
it.remove();
}
}
错误原因:循环中不能用两次it.next()方法。
解决方法:it.next()取出的数据使用新的对象进行接收后再使用
正确写法:
Iterator<Map<String, Object>> it = list.iterator();
while(it.hasNext()){
Map<String, Object> iterator = it.next(); //使用新对象进行接收
if(iterator .get("listSrc") != null && "C".equals(iterator .get("listSrc").toString())){
it.remove();
}
}