2009-10-22 108 views
0

對於這種方法,我必須做一個鏈接列表堆棧的淺拷貝。 因此,首先我會初始化鏈接堆棧,然後我會使用for循環來通過值來複制堆棧。但是,爲了使它們按照正確的順序排列,我是否只需要一個嵌套循環來逆轉這組值呢? 這是我到目前爲止,我錯過了什麼?這會將堆棧中所有值的引用複製到另一個堆棧。在Java中的集合的淺拷貝

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; 
} 
+0

通常我不問這個問題,但這是一個作業問題嗎?如果是這樣,你需要添加「家庭作業」標籤。 – 2009-10-22 23:20:22

+1

好吧,在標準的Java API中沒有叫LinkedStack的類,所以我不確定你在問什麼。另外,'newStack.add [i];'不是有效的Java語法。 – Lachlan 2009-10-22 23:22:40

+0

我修好了,所以我應該添加一個for循環? – Lee 2009-10-22 23:26:23

回答

0

我想你使用LinkedList作爲你的堆棧。

根據Javadoc,.clone()方法,但要小心堆棧中的元素不會被克隆。

3

如果有問題的堆棧是this LinkedStack,那麼,像大多數集合一樣,它有一個複製構造函數和一個接受數組的函數。我看不到你的代碼你想克隆的原始堆棧/數組在哪裏,但這很容易通過:

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

這應該是被接受的答案 – 2015-10-09 16:15:41