0
我有一个任务,其中我有一个队列(从类ArrayQueues),我应该写一个方法在另一个类(Queues)将队列分成两部分。方法split(队列队列)采用队列并返回另一个队列,其中第一个队列的项目只有一半,但它不仅仅是前半部分或后半部分。它占用原始队列中的所有其他项目并均匀分配项目。这是我会如何看:请帮我发现我的错误。我得到一个空队列,但我期望它有原始队列的一半项目
public class Queues{
public static <E> Queue<E> split(Queue<E> queue){
Queue<E> queue1 = new ArrayQueue<>(queue.capacity());
Queue<E> queue2 = new ArrayQueue<>(queue.capacity());
int size = queue.size();//I did this because the size of queue changes after every iteration due to it being dequeued
for(int i = 0; i < size;i++){
if(i%2==0){
queue2.enqueue(queue.dequeue());//adds item from queue to queue2 and removes that item from queue
}else{
queue1.enqueue(queue.dequeue());//add item from queue to queue1 and removes item from queue
}
queue = queue1;
return queue2;
}
}
结果我得到的是队列2和队列1都有相应的项目(从队列中所有其他项目)。然而,原来的队列现在是空的,我明白这是因为我已经将它列队出队了。但是我设置了
queue = queue1
为什么在我将它设置为queue1后它是空的?
谢谢。所以我试图平均分配队列到一个新队列和原始队列中。任何关于如何从我拥有的方面提出的建议?或者我是否以错误的方式去做? – user5362867
调用queue.clear(),然后queue.addAll(queue1)。这应该做到这一点。 – Chicodelarosa