我有一个Queueq1,它被实现为 a LinkedList,我想定义一个Queueq2,它是一个单独但相同的Queueq1 实例。
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);
}