Как мне скопировать очередь в 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);
}