一个hashMap删除操作的简单问题

为什么第二种操作会抛出异常,第一种却不会
全部评论
因为第一个循环先判断 hasNext() 才进入循环执行next(); 而第二个是,先执行next() 再判断hasNext(); 而next()方法中,当下一个元素为null时会抛出异常。
点赞 回复 分享
发布于 2018-04-12 16:48
第二个第一次直接remove,没有next
点赞 回复 分享
发布于 2018-04-12 16:54
因为第一个判断了hasNext()后才调用当前迭代器的next(),第二个你remove()之后可能hasNext()返回false了,调用next()自然抛出异常。
点赞 回复 分享
发布于 2018-04-12 17:15
第二种操作应该先是抛出的java.lang.IllegalStateException 异常, 因为第一次remove()前没有next(), current=null, 删除会抛异常。如果没有这个问题,后面的remove()后再next()确实也会抛异常,是NoSuchElementException异常。
点赞 回复 分享
发布于 2018-04-12 17:55

相关推荐

10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务