我正在为在线课程编写一个编程任务。我提交了作业并收到了成绩以及他们执行的测试记录。在那个日志里,我看到了这个:
测试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)仅向我们提供了有关如何执行上述操作的信息,仅此而已。
任何帮助,将不胜感激。谢谢。
“嵌套迭代器”和“并行迭代器”不是标准术语,但我至少可以解释这一部分:
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]。