Java阵列队列

时间:2012-11-22 12:37:48

标签: java queue

创建这样的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,0q2: 9,8,7,6,5

我需要一种方法,将队列q2合并到具有交错元素的队列q1中。 因此,如果println'再次输出:q1: 0,5,1,6,2,7,3,8,4,9q2: 9,8,7,6,5

我的课程包含所有适当的方法enqueuedequeuepeekisEmptysizedoubleSize ...我的方法名字是:

    public void mergedQs(ArrayQueue q) {
    }

基本上我想将对象添加到两个队列,然后合并第二个队列到第一个队列(不只是添加它们)。 理想情况下,我希望避免使用它们或使用ArrayList,因为我希望它们保留队列。

1 个答案:

答案 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;
}