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

问题描述 投票:0回答:1

我正在为在线课程编写一个编程任务。我提交了作业并收到了成绩以及他们执行的测试记录。在那个日志里,我看到了这个:

测试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(); }
  }

其中head是指向我的Queue数据结构顶部的当前元素的指针,tail是我的Queue数据结构末尾的当前元素。

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

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

java algorithm iterator
1个回答
1
投票

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

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

它说你的迭代器以相同的顺序给出相同的十个项目,当它们应该在不同的顺序中给出相同的十个项目时。

要在错误报告表单中写这个,它说你有这个错误:

重现的步骤:创建一个包含十个元素的RandomizedQueue。获取两个迭代器(通过调用iterator()两次)。迭代每个(通过反复调用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]。

© www.soinside.com 2019 - 2024. All rights reserved.