为了账号安全,请及时绑定邮箱和手机立即绑定

什么是 Java 中的嵌套和并行迭代器?

什么是 Java 中的嵌套和并行迭代器?

天涯尽头无女友 2022-09-22 19:35:02

我正在为一门在线课程做编程作业。我提交了作业,并收到了成绩以及他们执行的测试日志。在那份日志中,我看到了这个:


测试 9:在同一随机队列上创建两个嵌套迭代器


n = 10 - 两个内部迭代器返回相同的项目序列 - 它们应返回相同的项目集,但顺序不同...


我还看到一条类似的消息,将“嵌套”替换为“并行”。


我的类迭代器的代码如下所示:


public Iterator<Item> iterator() { return new RandomizedQueueIterator(); }

  private class RandomizedQueueIterator implements Iterator<Item> {

    private int start = head;

    public boolean hasNext() { return start < tail; }

    public Item next() {

      if (start == tail)

         throw new NoSuchElementException();

      return a[start++];

    }

    public void remove() { throw new UnsupportedOperationException(); }

  }

其中 是指向队列数据结构顶部的当前元素的指针, 是队列数据结构末尾的当前元素。headtail


该课程提供的代码(Sedgewick的算法I)只为我们提供了有关如何执行上述操作的信息,仅此而已。


任何帮助将不胜感激。谢谢。


查看完整描述

1 回答

?
隔江千里

TA贡献1561条经验 获得超10个赞

“嵌套迭代器”和“并行迭代器”不是标准术语,但我至少可以解释这一部分:

n = 10 - 两个内部迭代器返回相同的项目序列 - 它们应返回相同的项目集,但顺序不同...

这是说你的迭代器以相同的顺序给出了相同的十个项目,而他们应该以不同的顺序给出相同的十个项目。

要以错误报告的形式编写此内容,它表示您有此错误:

重现步骤:创建包含 10 个元素的 。获取两个迭代器(通过调用两次)。循环访问每个(通过重复调用和直到返回),并记录结果。RandomizedQueueiterator()hasNext()next()hasNext()false

预期行为:两个迭代器应给出相同的十个元素,但顺序不同(随机)。例如,一个迭代器可能给出 [1, 8, 3, 2, 6, 10, 9, 4, 7, 5],另一个迭代器可能给出 [8, 6, 3, 2, 7, 9, 10, 1, 5, 4]。

实际行为:两个迭代器以相同的顺序给出相同的元素。例如,它们都给出[1, 8, 3, 2, 6, 10, 9, 4, 7, 5]。


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信