如何在Java中复制队列?

问题描述 投票:12回答:3

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

java queue clone cloneable
3个回答
17
投票

在一个班轮:

new LinkedList<>(myQueue);

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

如果您愿意,用您自己的LinkedList实现替换Queue

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


3
投票

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

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

除此以外

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

3
投票

你可以使用迭代器:

Iterator<Integer> it = q1.iterator();
while(it.hasNext())  {
   q2.add(it.next());
}
© www.soinside.com 2019 - 2024. All rights reserved.