如何在Java中复制队列?

时间:2014-04-10 08:03:21

标签: java queue clone cloneable

我有一个Queue q1,我想创建一个与Queue q1相同的Queue q2。如何做到这一点,因为Queue没有实现Cloneable

3 个答案:

答案 0 :(得分:17)

在一个班轮中:

new LinkedList<>(myQueue);

由于Queue extends Collection和集合的构造函数需要另一个Collection,因此这是进行浅层克隆的快速方法。

如果您愿意,可以使用您自己的LinkedList实施代替Queue

另外,阅读javadocs。他们有所有的答案。

答案 1 :(得分:3)

如果q1是Quering的JCF实现之一,如ArrayQueue等,则可以使用

    Queue q2 = ((Cloneable)q1).clone();

否则

    Queue q2 = q1.getClass().newInstance();
    for(Object e : q1) {
        q2.add(e);
    }

答案 2 :(得分:3)

你可以使用迭代器:

Iterator<Integer> it = q1.iterator();
while(it.hasNext())  {
   q2.add(it.next());
}