2014-01-28 66 views
0

我想要一個編碼技巧建設者的目標是使一個堆棧具有max#元素,所以如果太多推動導致溢出一個新的堆棧創建和push()和流行()在這個新的堆棧上運行。如果新的堆棧完全彈出,則控制權返回到前一堆棧。ArrayList的對象直覺

我創建了一個ArrayList來容納我所有的堆棧。我是新來的ArrayList和遇到了問題,但這裏是我的想法:

  • 整數的ArrayList持有的容器來存儲一個int在每個元素,你必須手動填寫一個元素的東西,如myArrayList .SET(0,13)。
  • 因此,StackList的ArrayList包含一個容器,用於在每個元素處存儲對堆棧的引用。

但是,如何存儲對堆棧的引用?我不能只做myArrayList.set(0,Stack myStack)。我認爲正確的答案可能是myArrayList.set(0,new Stack()),但不符合直覺。就像一個int的ArrayList只是容器一樣,一個Stack引用的ArrayList不應該已經持有堆棧引用,只是空的容器。

我的思維錯在哪裏?

+0

第一個問題:由於泛型不適用於Java中的基元,因此您不能擁有'ArrayList '...... –

+0

您是否對堆棧本身有任何特定的數據結構? 'LinkedList'可能是一個不錯的選擇。實際上每個堆棧裏面會發生什麼? –

+2

有很多方法可以回答這個問題,但是如果你想要建立你的技能,我建議你嘗試編碼這些,以及各種選擇,以獲得更好的感覺。在調試器下運行它,看看它是如何工作的。這將有助於建立你的技能和你的直覺 - 如果我們告訴你答案,你將不會得到。 – jdigital

回答

0

如果你要堅持使用ArrayList中,你可以嘗試

myArrayList.add(0, new Stack()); 

與(在這種情況下,0)索引使用add方法將推動其他條目ArrayList中向下(或更準確地說,按照文檔右側)。當你想「彈出」堆棧出myArrayList的,叫

myArrayList.remove(0); 

這將在0刪除棧,並移動其他協議棧對象向上(或左側)。