开发者社区> 问答> 正文

实现迭代器时索引不增加

因此,我制作了一个DiceCollection类,该类实现了Iterator及其类。在进行单元测试时,我的next()方法似乎并没有增加我的索引,而且我不确定这背后的原因是什么。

public class DiceCollection implements Iterator<De> {
 public int position = 0;
 public int endPosition = 3;
 private De[] diceList;

 @Override
 public boolean hasNext() {
    return position < endPosition;
 }

 @Override
 public De next() {
    De de = diceList[position];     
    position++;
    return de;
 }
}

现在,当调用next()方法时,我的位置索引保持不变:

    Iterator<De> iter = des.creerIterateur();
    System.out.println(iter.hasNext());
    System.out.println(des.position + "/" + des.endPosition);
    System.out.println(iter.next());
    System.out.println(des.position + "/" + des.endPosition);
    System.out.println(iter.hasNext());
    System.out.println(iter.next());
    System.out.println(des.position + "/" + des.endPosition);
    System.out.println(iter.hasNext());
    System.out.println(iter.next());
    System.out.println(iter.hasNext());
    System.out.println(iter.next()); //null

我得到以下输出:

true
0/3
De [valeur=0, nbFaces=6]
0/3
true
De [valeur=0, nbFaces=8]
0/3
true
De [valeur=0, nbFaces=10]
true
null

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 17:27:40 267 0
1 条回答
写回答
取消 提交回答
  • 您在打印des对象的position属性时正在iter对象上调用next()方法。调用next()时,iter对象的position属性改变,而des.position属性不变。

    System.out.println(des.next());
    System.out.println(des.position + "/" + des.endPosition);
    

    应该打印正确的值

    回答来源:Stack Overflow

    2020-03-27 17:28:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载