创建这样的2个队列时:
ArrayQueue q1 = new ArrayQueue();
ArrayQueue q2 = new ArrayQueue();
for (int i = 0; i < 5; i++) {
q1.enqueue(new Integer(i));
}
for (int i = 5; i < 10; i++) {
q2.enqueue(new Integer(i));
}
System.out.println("q1: " + q1);
System.out.println("q2: " + q2);
输出:q1: 4,3,2,1,0
和q2: 9,8,7,6,5
。
我需要一种方法,将队列q2
合并到具有交错元素的队列q1
中。
因此,如果println
'再次输出:q1: 0,5,1,6,2,7,3,8,4,9
和q2: 9,8,7,6,5
。
我的课程包含所有适当的方法enqueue
,dequeue
,peek
,isEmpty
,size
,doubleSize
...我的方法名字是:
public void mergedQs(ArrayQueue q) {
}
基本上我想将对象添加到两个队列,然后合并第二个队列到第一个队列(不只是添加它们)。 理想情况下,我希望避免使用它们或使用ArrayList,因为我希望它们保留队列。
答案 0 :(得分:4)
您可能会觉得这很有用。它合并了任意数量的队列。
public static <T> Queue<T> mergeQs(Queue<T> ... qs) {
Queue<T> ret = new ConcurrentLinkedQueue<T>();
boolean more;
do {
more = false;
for (Queue<T> q : qs)
if (!q.isEmpty()) {
ret.add(q.remove());
more = true;
}
} while(more);
return ret;
}