Как мне скопировать очередь в Java?

У меня есть Queue Q1, и я хочу создать Queue Q2, который идентичен Queue q1. Как это сделать, поскольку очередь не реализует Cloneable,

3 ответа

Решение

В один лайнер:

new LinkedList<>(myQueue);

поскольку Queue extends Collectionи коллекции имеют конструктор, который принимает другой CollectionЭто быстрый способ сделать мелкий клон.

Замена LinkedList с вашим собственным Queue реализация, если вы хотите.

Кроме того, прочитайте Javadocs. У них есть все ответы.

Вы можете использовать итератор:

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

Если q1 является одной из реализаций JCF Queue, таких как ArrayQueue и т. Д., Cloneable, вы можете использовать

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

иначе

    Queue q2 = q1.getClass().newInstance();
    for(Object e : q1) {
        q2.add(e);
    }
Другие вопросы по тегам