【问题标题】:How do I copy or clone a LinkedList-implemented Queue in Java?如何在 Java 中复制或克隆链表实现队列?
【发布时间】:2014-05-23 19:30:09
【问题描述】:

我有一个Queue q1,它被实现为LinkedList,我想定义一个Queue q2,它是Queue q1 的一个单独但完全相同的实例。

既然Queue 没有实现Cloneable,我该怎么做?

【问题讨论】:

    标签: java queue clone cloneable


    【解决方案1】:

    在一个班轮中:

    new LinkedList<>(myQueue);

    由于Queue extends Collection 和集合有一个构造函数,该构造函数接受另一个Collection,这是进行浅层克隆的快速方法。

    如果您愿意,可以用您自己的 Queue 实现替换 LinkedList

    另外,请阅读 javadocs。他们有所有的答案。

    【讨论】:

    • new LinkedList(myQueue);应该做
    • 你说得对,我是个白痴。队列扩展集合。
    【解决方案2】:

    如果 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());
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 2018-04-01
        • 2021-10-25
        • 2011-06-07
        • 1970-01-01
        • 2015-05-21
        • 1970-01-01
        • 2012-02-13
        • 2010-12-23
        相关资源
        最近更新 更多