【问题标题】:Shallow copy of a collection in JavaJava中集合的浅拷贝
【发布时间】:2010-12-09 07:03:02
【问题描述】:

对于这种方法,我必须制作一个链表堆栈的浅拷贝。 因此,首先我将初始化链接堆栈,然后我将使用 for 循环遍历值以复制堆栈。但是,为了将它们按正确的顺序排列,我是否只有一个嵌套循环来反转一组值? 这是我到目前为止得到的,我错过了什么吗?这会将堆栈中所有值的引用复制到另一个堆栈。

LinkedStack<E> newStack = new LinkedStack<E>(); 
  for(int i = 0; i < objectCount; i++){   //objectCount is figuring out the count
     newStack.add[i] = newStack[i];
  // do I have to put a for loop here?
 return newStack; 
}

【问题讨论】:

  • 通常我不会问这个问题,但这是作业问题吗?如果是这样,您需要添加“作业”标签。
  • 嗯,标准 Java API 中没有名为 LinkedStack 的类,所以我不太确定您在问什么。此外,newStack.add[i]; 不是有效的 Java 语法。
  • 我修好了,所以我应该添加一个for循环吗???
  • newStack.add[i] = newStack[i]?抛开循环不谈,如何添加刚刚初始化的内容?
  • 这个代码示例看起来很奇怪。 newStack.add[i] 仅在 LinkedStack 类有一个名为 add 的公共数组时才有效,但这很不寻常。此外,您的 for 循环有一个左大括号,但没有关闭。

标签: java list collections stack


【解决方案1】:

如果有问题的堆栈是this LinkedStack,那么,像大多数集合一样,它有一个复制构造函数,一个接受一个数组。我无法从您的代码中看到您要克隆的原始堆栈/数组在哪里,但这可以通过以下方式轻松完成:

 LinkedStack<E> newStack = new LinkedStack<E>(originalStack);

【讨论】:

    【解决方案2】:

    我想你的堆栈使用 LinkedList。

    根据Javadoc,.clone() 方法,但要注意堆栈中的元素不会被克隆。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2011-01-22
      • 2012-04-12
      • 2011-03-24
      • 2016-12-03
      • 1970-01-01
      相关资源
      最近更新 更多