基本上,我得到了一个CircularQueue的实现,需要实现一个名为'public boolean contains (E other)'的方法,如果参数'other'存在于我的队列中,则应返回true。
因为它是一个数组,所以我还好,但是我看到还有这个附加条件让我很困惑。
请记住,您不能自由地在队列中导航所有元素。仅可以通过peek方法随时访问队列的前面元素。 您对contains和intersectWith方法的实现不得使用任何额外的队列来临时保存此队列的某些元素。
一个迭代器是否适用于解决这个问题?
非常感谢您的任何帮助。
Mjall
解决方案:
我想出了一个答案,方法rotate的描述如下: 方法rotate(int n)从队列的前面移除n个元素并将它们添加到队列的后面。元素按照从队列前面移除的顺序添加到队列的后面。例如,给定包含元素“A,B,C,D,E”的队列q,其中元素A位于队列的前面,在调用方法q.rotate(2)后,队列的内容将是“C,D,E,A,B”;
public boolean contains(E elem) {
while( this.isEmpty() != true){
if(this.peek() == elem){return true;}
else{rotate(1);}
}
return false;
}