2011-04-19 70 views

回答

5

如果您要約java.util.Stack,那麼限制爲Integer.MAX_VALUE約爲20億。但是,如果讓它自然增長,那麼如果添加超過13億(10 * 2^28),則會發生異常,因爲它會嘗試將底層陣列增長到大於允許的大小。

恕我直言堆棧是一個遺留類在Java 1.2(1998)取代我不建議你使用它。

+0

感謝您的信息。我是CS學生;由於課程的方向,我不能避免它們。出於好奇,什麼取代了堆棧? – somehume 2011-04-19 11:59:42

+2

AFAIK,'java.util.ArrayList',它是一個包裝數組並實現標準接口(如List)的非同步版本。早期的集合不是爲實現接口而設計的,這就是爲什麼它們有多個方法來實現兼容性。 – 2011-04-19 12:11:53

+1

@DJClayworth,ArrayList有'add()'和'remove(size() - 1)',它們做同樣的事情。 – 2011-04-19 19:49:08

2

存儲能力通常受限於可用內存,堆棧數據結構的堆內存或調用堆棧的堆棧內存。

+0

...最大可用內存,或Integer.MAX項目數量? – Chii 2011-04-19 11:43:05

+0

@Chii它取決於棧的實現,它也可以使用長索引。我想說你可能會在達到最大索引範圍之前遇到內存限制。 – Thomas 2011-04-19 11:45:27

相關問題