我有一个Queue
q1,它被实现为 a LinkedList
,我想定义一个Queue
q2,它是一个单独但相同的Queue
q1 实例。
Queue
由于没有实施,我该怎么做Cloneable
?
在一个班轮中:
new LinkedList<>(myQueue);
由于Queue extends Collection
, 和集合有一个构造函数,它接受另一个Collection
,所以这是进行浅克隆的快速方法。
如果您愿意LinkedList
,可以用您自己的实现替换。Queue
另外,请阅读 javadocs。他们有所有的答案。
您可以使用迭代器:
Iterator<Integer> it = q1.iterator();
while(it.hasNext()) {
q2.add(it.next());
}
如果 q1 是队列的 JCF 实现之一,例如 ArrayQueue 等是可克隆的,您可以使用
Queue q2 = ((Cloneable)q1).clone();
否则
Queue q2 = q1.getClass().newInstance();
for(Object e : q1) {
q2.add(e);
}