Java Iterator for 循环 NoSuchElementException 异常

本文探讨使用Java Iterator实现多重for循环可能遇到的问题。通过EffectiveJava中的案例解释为何使用Iterator进行多重循环时会出现NoSuchElementException异常,并深入分析其根本原因。

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

Java 用iterator实现多重for循环可能会遇到的问题
这里写图片描述
Effective Java 中已有相应介绍:
这里写图片描述
这里写图片描述
这里写图片描述这里写图片描述

原因就在于

for(Iterator<Suit> i = suits.iterator();i.hasNext();){
    for(Iterator<Rank> j =ranks.iterator();j.hasNext();){
       deck.add(new Card(i.next(),j.next()));

我们原本是打算每个 i 对应 j 个内循环,但实际上却是 在执行每一次内循环时,不仅 j 在遍历下一个 ranks 的元素,i 也在遍历下一个 suits 的元素(i.next()),因为 j 元素的个数多于 i 的元素个数,所以当遍历完第 i 个内循环时,由于 i+1< j
,内循环继续执行,而 i+1 对应的 suits 已经为空了,所以出现 NoSuchElementException

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值