如何在 Java 中复制或克隆链表实现队列?
Posted
技术标签:
【中文标题】如何在 Java 中复制或克隆链表实现队列?【英文标题】:How do I copy or clone a LinkedList-implemented Queue in Java? 【发布时间】:2014-05-23 19:30:09 【问题描述】:我有一个Queue
q1,它被实现为LinkedList
,我想定义一个Queue
q2,它是Queue
q1 的一个单独但完全相同的实例。
既然Queue
没有实现Cloneable
,我该怎么做?
【问题讨论】:
【参考方案1】:在一个班轮中:
new LinkedList<>(myQueue);
由于Queue extends Collection
和集合有一个构造函数,该构造函数接受另一个Collection
,这是进行浅层克隆的快速方法。
如果您愿意,可以用您自己的 Queue
实现替换 LinkedList
。
另外,请阅读 javadocs。他们有所有的答案。
【讨论】:
new LinkedList如果 q1 是队列的 JCF 实现之一,比如 ArrayQueue 等是可克隆的,您可以使用
Queue q2 = ((Cloneable)q1).clone();
否则
Queue q2 = q1.getClass().newInstance();
for(Object e : q1)
q2.add(e);
【讨论】:
【参考方案3】:你可以使用迭代器:
Iterator<Integer> it = q1.iterator();
while(it.hasNext())
q2.add(it.next());
【讨论】:
以上是关于如何在 Java 中复制或克隆链表实现队列?的主要内容,如果未能解决你的问题,请参考以下文章