I have a Queue
q1, that is implemented as a LinkedList
, and I want to define a Queue
q2, that is a separate, but identical identical instance of Queue
q1.
How do I do that since Queue
does not implement Cloneable
?
In a one liner:
new LinkedList<>(myQueue);
Since Queue extends Collection
, and collections have a constructor that takes another Collection
, this is a quick way to do a shallow clone.
Substitute LinkedList
with your own Queue
implementation if you wish.
Also, read the javadocs. They have all the answers.
you can use an iterator :
Iterator<Integer> it = q1.iterator();
while(it.hasNext()) {
q2.add(it.next());
}
If q1 is one of JCF implementations of Queue like ArrayQueue etc are Cloneable you can use
Queue q2 = ((Cloneable)q1).clone();
otherwise
Queue q2 = q1.getClass().newInstance();
for(Object e : q1) {
q2.add(e);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With