欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java Iterator for 循环 NoSuchElementException 异常

程序员文章站 2022-06-25 12:09:09
...

Java 用iterator实现多重for循环可能会遇到的问题
Java Iterator for 循环 NoSuchElementException 异常
Effective Java 中已有相应介绍:
Java Iterator for 循环 NoSuchElementException 异常
Java Iterator for 循环 NoSuchElementException 异常
Java Iterator for 循环 NoSuchElementException 异常Java Iterator for 循环 NoSuchElementException 异常

原因就在于

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