Queue
q1があり、これはLinkedList
として実装されています。Queue
q2を定義したいのですが、これはQueue
q1。
Queue
はCloneable
を実装していないので、どうすればよいですか?
ワンライナーで:
new LinkedList<>(myQueue);
Queue extends Collection
、およびコレクションには、別のCollection
を取るコンストラクターがあります。これは、浅いクローンを作成する迅速な方法です。
必要に応じて、LinkedList
を独自のQueue
実装に置き換えます。
また、javadocsもお読みください。彼らはすべての答えを持っています。
Q1がArrayQueueなどのQueueのJCF実装の1つである場合、Cloneableを使用できます。
Queue q2 = ((Cloneable)q1).clone();
さもないと
Queue q2 = q1.getClass().newInstance();
for(Object e : q1) {
q2.add(e);
}
あなたはイテレータを使うことができます:
Iterator<Integer> it = q1.iterator();
while(it.hasNext()) {
q2.add(it.next());
}