我有一个Queue
q1,我想创建一个与Queue
q1相同的Queue
q2。如何做到这一点,因为Queue没有实现Cloneable
。
答案 0 :(得分:17)
在一个班轮中:
new LinkedList<>(myQueue);
由于Queue extends Collection
和集合的构造函数需要另一个Collection
,因此这是进行浅层克隆的快速方法。
如果您愿意,可以使用您自己的LinkedList
实施代替Queue
。
另外,阅读javadocs。他们有所有的答案。
答案 1 :(得分:3)
如果q1是Quering的JCF实现之一,如ArrayQueue等,则可以使用
Queue q2 = ((Cloneable)q1).clone();
否则
Queue q2 = q1.getClass().newInstance();
for(Object e : q1) {
q2.add(e);
}
答案 2 :(得分:3)
你可以使用迭代器:
Iterator<Integer> it = q1.iterator();
while(it.hasNext()) {
q2.add(it.next());
}