集合迭代器Iterator与java.util.NoSuchElementException异常

本文详细解析了Java中Iterator的.next()方法的正确使用方式,包括常见错误示例及解决方案,帮助开发者避免NoSuchElementException异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总结: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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值